簡體   English   中英

sshj:如何在執行命令時從長時間運行的命令中讀取InputStream

[英]sshj: how to read InputStream from long-running command while command is executing

目前,我正在使用以下命令通過ssh執行命令:

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

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

如何獲得“實時”響應?

我想我可以讀取輸入流,直到出現行尾,然后打印該行。 但是,庫中是否已有某種方法可以幫助我解決此問題?

它阻塞並等待整個過程,因為這就是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);
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM