JSCH:有没有办法检索提示?

时间:2013-01-16 15:16:24

标签: java ssh prompt jsch

我正在使用JSCH通过SSH访问主机,然后启动一些命令。

主持人没有使用“普通”操作系统,因为它是BNG:http://en.wikipedia.org/wiki/Border_Network_Gateway

我需要检索提示,因为它有有用的信息,因为它可能是这样的 [local]MYBNG#[not_local]MYBNG#我需要应用一些逻辑,知道提示中是否有localnot_local

InputStream检索ExecChannel不起作用,因为您只能看到刚刚启动的命令的输出...

2 个答案:

答案 0 :(得分:0)

在JSCH的示例页面上,有一个登录SSH服务器并检索shell提示符的示例:

Example is here

应该执行此操作的代码具体为:

Channel channel=session.openChannel("shell");
channel.setOutputStream(System.out);

这些示例包含针对特定终端仿真的注释,可能需要依赖于BNG。

答案 1 :(得分:0)

你可以点击输入:

outputStream.write("\n");
outputStream.flush();

阅读输出:

String res = "";
byte array[];
int num;
do {
    if ((num = inputStream.available()) > 0) {
        array = new byte[num];
        num = inputStream.read(array);
        String ret = new String(array, 0, num);
        res += ret;

        if (inputStream.available() == 0)
            break;                      
    }
} while (true);

并验证它是否包含一些提示:

res.toString().contains("[local]MYBNG#");