我正在使用JSCH通过SSH访问主机,然后启动一些命令。
主持人没有使用“普通”操作系统,因为它是BNG:http://en.wikipedia.org/wiki/Border_Network_Gateway。
我需要检索提示,因为它有有用的信息,因为它可能是这样的
[local]MYBNG#
或[not_local]MYBNG#
我需要应用一些逻辑,知道提示中是否有local
或not_local
。
从InputStream
检索ExecChannel
不起作用,因为您只能看到刚刚启动的命令的输出...
答案 0 :(得分:0)
在JSCH的示例页面上,有一个登录SSH服务器并检索shell提示符的示例:
应该执行此操作的代码具体为:
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#");