0

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

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

我需要检索提示,因为它包含有用的信息,因为它可能类似于 [local]MYBNG#or[not_local]MYBNG#并且我需要应用一些逻辑来知道提示中是否存在localor not_local

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

4

2 回答 2

1

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

例子在这里

应该这样做的代码具体是:

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

这些示例有针对特定终端仿真的注释,这取决于 BNG 可能需要。

于 2013-01-16T15:50:32.780 回答
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#");
于 2013-01-16T15:53:36.700 回答