Код:
String line;
ProcessBuilder telnetProcessBuilder = new ProcessBuilder("/bin/bash");
telnetProcessBuilder.redirectErrorStream(true);
Process telnetProcess = telnetProcessBuilder.start();
BufferedReader input = new BufferedReader(new InputStreamReader(telnetProcess.getInputStream()));
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(telnetProcess.getOutputStream()));
output.write("telnet <hostname> -l <username>\n");
output.flush();
output.write("<password>\n");
output.flush();
output.write("cd <path>\n");
output.flush();
output.write("<script-file1>\n");
output.flush();
output.write("<script-file2>\n");
output.flush();
output.write("\n");
output.flush();
while((line = input.readLine())!= null)
{
System.out.println(line);
if(line.indexOf("<some final text after <script-file2>>")>-1)
{
line = input.readLine();
System.out.println(line);
break;
}
}
output.close();
input.close();
//output.write("exit\n");
//output.flush();
//telnetProcess.destroy();
В соответствии с приведенным выше кодом java запускает процесс linux / bin / bash, а затем подключается к удаленным системам, где выполняет несколько сценариев для приложения, а затем должен оставить оба ввода,выходные потоки и управление процессом / bin / bash для пользователя и выход с кодом 0.
Теперь, после создания jar-файла, я буду вызывать его из терминала команды linux (GNOME), а затем процесс должен оставить контроль над собой и IOПотоки передаются пользователю в конце кода Java (его выполнение), где пользователь вводит некоторые команды, такие как состояние системы и диагностика, или завершает работу при вводе определенных символов, которые зависят от приложения. Это требование.
Но проблемаЯва выходит из последней строки и так процесс, даже если я не выйти или не уничтожить процесс.Да, это естественное поведение, но может кто-нибудь сказать мне, как я могу достичь этого, если кто-то уже сталкивался с проблемой?ну, я не могу показать, что является содержимым файлов сценариев и других вещей, которые могут вам понадобиться, поскольку его компания принадлежит.
Спасибо за ответы
Ашутош