【发布时间】:2011-10-10 15:46:19
【问题描述】:
我正在使用 sshj 连接到远程机器以检索各种值。正如我在 sshj 中所了解的,当我执行以下代码来检索远程机器的主机名时:
SSHClient sshClient = new SSHClient();
Session session = sshClient.startSession();
Command commandObject = session.exec("hostname");
我知道我可以通过抓取输入流来检索返回值
session.getInputStream();
我似乎遇到的问题是,会话对象(和命令)被设计为“一次性使用”的方式。因此,考虑到这一点,我想在完成会话后关闭会话以清理资源,即
commandObject.close();
但是,由于 sshj 的异步特性,我无法确定输入流中何时有返回值可用,因为似乎没有内置任何回调功能。
我能想到的解决此问题的唯一方法是在检查输入流之前休眠一段预定义的时间。但是我觉得这只是一个 hack,我希望有更好的解决方案。
有没有人在使用 sshj 时遇到过类似的问题?有什么可能的解决方案?
干杯!
【问题讨论】: