sshj:如何在执行命令时从 long-运行 命令读取 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()
但是,要查看输出,我需要等待,直到命令完成。
如何获得 "live" 响应?
我想我可以读取输入流直到出现行尾,然后打印该行;但是,库中是否已经有一些方法可以帮助我解决这个问题?
它会阻塞并等待整个过程,因为这就是 IOUtils.readFully
的目的,它显示为 fully。
相反,要逐行阅读,您可以做一些简单的事情:
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);
}
目前我正在使用以下命令通过 ssh 执行命令:
val sshCmd = session.exec(command)
println(IOUtils.readFully(sshCmd.inputStream).toString())
sshCmd.join()
但是,要查看输出,我需要等待,直到命令完成。
如何获得 "live" 响应?
我想我可以读取输入流直到出现行尾,然后打印该行;但是,库中是否已经有一些方法可以帮助我解决这个问题?
它会阻塞并等待整个过程,因为这就是 IOUtils.readFully
的目的,它显示为 fully。
相反,要逐行阅读,您可以做一些简单的事情:
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);
}