【发布时间】:2014-09-19 08:31:47
【问题描述】:
我正在尝试运行 Java 程序以在远程 (Linux) 机器上执行命令。我可以让 putty.exe 运行,然后使用 SSH 密钥连接到机器。但我无法运行“bash”“ps-ef”或“ls -la”等实际命令。当前使用 Java runtime.exec,不确定使用 java.lang.ProcessBuilder 是否有帮助?我究竟做错了什么 ?任何帮助/指导将不胜感激..提前致谢
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","abc@login.testserver.helloworld.co.uk","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 库,而不是使用 putty?
-
Java 的全部意义在于抽象远离操作系统。在诉诸本机命令之前,请始终搜索独立于平台的替代方案。在您的示例中,只需使用 Java 的 SSH 实现 - 例如 sshj。
-
感谢您的快速回复。我会检查 sshj 和 Jsch。
-
请求下一个问题,可能是另一个线程。什么是最好的 SSH 库,可以帮助使用 SSH 密钥连接到远程 linux 机器并执行命令
标签: java shell runtime.exec