【问题标题】:sshj: how to read InputStream from long-running command while command is executingsshj:如何在命令执行时从长时间运行的命令中读取 InputStream
【发布时间】:2016-11-03 13:44:33
【问题描述】:

目前我正在通过 ssh 执行命令:

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

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

如何获得“实时”响应?

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

【问题讨论】:

    标签: java sshj


    【解决方案1】:

    它阻塞并等待整个事情,因为这就是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);
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 1970-01-01
      • 2021-07-03
      相关资源
      最近更新 更多