sshj:如何在命令执行时从长时间运行的命令中读取InputStream

时间:2016-11-03 13:44:33

标签: java sshj

目前我正在使用以下命令执行ssh命令:

val sshCmd = session.exec(command)
println(IOUtils.readFully(sshCmd.inputStream).toString())
sshCmd.join()

但是,要查看输出,我需要等待直到命令完成。

如何获得“实时”回复?

我想我可以读取输入流直到行结束然后打印行;但是,库中是否有一些方法可以帮助我解决这个问题?

1 个答案:

答案 0 :(得分:2)

它阻止并等待整个事情,因为IOUtils.readFully的意图是什么,它完全 。 相反,要逐行阅读,您可以执行以下简单操作:

 try (BufferedReader reader = new BufferedReader(new InputStreamReader(sshCmd.inputStream))) {
     String line;
     while ((line = reader.readLine()) != null) {
         System.out.println(line);
     }
 } catch (IOException e) {
     System.out.println(e);
 }