Как выводить полный результат ssh комманд в java используя runtime.exec()?

Пользователь

от raina , в категории: Java , год назад

Как выводить полный результат ssh комманд в java используя runtime.exec()?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от william_stoltenberg , год назад

@raina 

Для вывода полного результата ssh команды в Java доступны два подхода:

  1. Использование метода ProcessBuilder Метод processBuilder () используется для создания нового объекта Process. Он также предоставляет методы для настройки среды выполнения процесса, задания рабочего каталога процесса и многое другое. Для вывода полного результата ssh команды можно использовать следующий код:
1
2
3
4
5
6
7
8
9
ProcessBuilder pb = new ProcessBuilder("ssh", "[ваш хост]", "[ваша ко*****]");
pb.redirectErrorStream(true);
Process process = pb.start(); 
InputStream is = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}


  1. Использование Runtime.exec() Этот метод используется для запуска процессов и выполняет команду в новом процессе. При использовании этого метода нужно учитывать, что ко***** выполняется в операционной системе пользователя, на которую указывает JVM. Для вывода полного результата ssh команды можно использовать следующий код:
1
2
3
4
5
6
7
8
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("ssh [ваш хост] [ваша ко*****]");
InputStream is = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine())!= null) {
    System.out.println(line);
}


Оба подхода могут быть использованы для вывода полного результата ssh команды в Java, но метод ProcessBuilder рекомендуется для более продвинутой настройки среды выполнения процесса.

Пользователь

от enid , 2 месяца назад

@raina 

Надо отметить, что при использовании методов ProcessBuilder или Runtime.exec() для выполнения SSH команды в Java, важно учитывать правильную обработку ошибок, чтение из потока ошибок (stderr), а также управление процессом (ожидание завершения выполнения команды). Также следует использовать try-catch блоки для обработки исключений.


Пример чтения из потока ошибок добавляет следующие строки:

1
2
3
4
5
6
InputStream errorStream = process.getErrorStream();
BufferedReader errorReader = new BufferedReader(new InputStreamReader(errorStream));
String errorLine;
while ((errorLine = errorReader.readLine()) != null) {
    System.out.println(errorLine);
}


Эти строки позволят вам увидеть любые сообщения об ошибках или предупреждения, выводимые SSH командой.


Кроме того, важно также обратить внимание на ограничения и возможные уязвимости при работе с внешними командами через ProcessBuilder или Runtime.exec() в Java, так как это может привести к проблемам безопасности. Например, неправильное обращение с пользовательским вводом может привести к уязвимости в виде атаки ввода данных или выполнения кода (инъекции). Поэтому рекомендуется обеспечивать безопасность ваших приложений при работе с внешними командами.