Проблема: я не могу выбраться из «бесконечного цикла/блока» из буферизованного reader.readline(). Он передает его один раз, а затем просто зависает там после того, как второй оторвался от цикла while.Jsch - Передача команд через ssh
Вот мой код:
public void sendCommand(String command){
{
String line;
try{
while((line = consoleOutput.readLine())!= null)
{
System.out.println(line);
if(line.equals("rkscli:") || line.equals("password :") || line.equals("Please login: ")){
pin.write((command + "\n\r").getBytes());
}
}
}
Я использую метод, используемый nilbot от: Here Я делаю именно это, когда я пытаюсь послать команды через оболочку.
Проблема:
То, что я пытаюсь выполнить получает программу ждать, пока сервер не будет готов получить больше команд (ждать скорейшего «rkscli», потому что некоторые команды займет больше времени). Что я могу сделать для этого? В настоящее время я использую метод pipedinput/output.
Дополнительная информация:
Сервер даст мне «» 'S (пустые строки с символами новой строки) перед подсказкой. После нескольких из них это даст мне подсказку. Я также заметил, что если бы я изменил код так, чтобы он выглядел следующим образом:
public void sendCommand(String command){
{
String line;
try{
while((line = consoleOutput.readLine())!= null)
{
System.out.println(line);
pin.write("\r\n".getBytes());//Added line
if(line.equals("rkscli:") || line.equals("password :") || line.equals("Please login: ")){
pin.write((command + "\n\r").getBytes());
}
}
}
Это не будет висеть на bufferedReader.readline(), но будет идти до конца и пропустить запись (Это не похоже, ничего писать к оболочке, а иногда она будет и не предсказуема)
Любые идеи относительно того, что я могу сделать?