2016-11-03 16 views
0

В настоящее время я уверен, выполнение команды через SSH с помощью:sshj: как читать InputStream из затянувшихся команд в то время как команда выполняет

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

Однако, чтобы увидеть результат мне нужно ждать, пока команда не будет законченный.

Как я могу получить «живой» ответ?

Я думаю, что я могу прочитать входной поток до тех пор, пока не закончится линия линии, а затем напечатать строку; однако, есть ли в библиотеке какой-то метод, который может мне помочь?

ответ

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); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^