Я пытаюсь запустить программу Java для вывода команд на удаленную (Linux) машину. Я могу запустить putty.exe, а затем подключиться к машине с помощью SSH-ключей. Но я не могу запускать реальные команды, такие как «bash» «ps-ef» или «ls -la». В настоящее время с использованием Java runtime.exec, не уверены, поможет ли использование java.lang.ProcessBuilder
? Что я делаю не так ? Любая помощь/руководство было бы весьма признателен .. Спасибо заранееJava-программа для запуска команд оболочки из Windows-машины
package hello;
import java.io.*;
public class RuntimeExample {
public static void main(String args[]) throws IOException {
try{
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(new String[]{"C:\\Users\\yky90455\\Desktop\\putty.exe","[email protected]","bash", "ps -ef"});
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
System.out.printf("Output of running the command is:");
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Почему вы не используете для этого SSH-библиотеку вместо использования шпатлевки? – BackSlash
Весь смысл Java - абстрактная _away от ОС. Всегда ищите независимую от платформы альтернативу, прежде чем прибегать к вызовам собственных команд. В вашем примере просто используйте реализацию SSH для Java - например, [sshj] (https://github.com/hierynomus/sshj). –
Спасибо за ваш быстрый ответ. Я проверю sshj и Jsch. –