【发布时间】:2014-11-23 23:27:25
【问题描述】:
我正在尝试实现一个机器人,它可以模拟在 Java 中的 ssh 控制台上写入/读取的用户。 我正在使用 JSCH 库来管理 ssh 连接。 这是我开始的代码:
JSch jsch = new JSch();
Session session = jsch.getSession(username, ipAddress, port);
session.setPassword(password);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect(connectionTimeoutInMillis);
Channel channel = session.openChannel("shell");
InputStream is = new InputStream();
OutputStream out= new OutputStream();
channel.setInputStream(is);
channel.setOutputStream(out);
channel.connect();
channel.disconnect();
is.close();
out.close();
session.disconnect();
显然代码中的InputStream 和OutputStream 是错误的,我需要使用机器人可以用来发送字符串(命令行)和接收字符串(命令执行的结果)的东西,我应该使用什么类型的流来获得这个?
此外,我注意到,如果我发送命令并在许多情况下使用System.out 作为输出流,则输出为空,因为(我几乎可以肯定)Java 应用程序在命令执行产生之前终止结果。告诉 JSCH 通道侦听器“等到命令执行完成”然后继续的最佳做法是什么?我可以在命令执行后使用Thread.sleep(someTime),但出于显而易见的原因我不太喜欢它。
【问题讨论】: