我正在尝试运行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();
}
}
}
答案 0 :(得分:2)
尝试使用Jsch From here从Java执行shell脚本到某个远程Linux机器。我已经研究了这个并且它真的很有趣。尽管你可能会发现文档缺乏理解这一点,但你可以很容易地克服它。
答案 1 :(得分:0)
还要考虑ExpectJ,它是TCL Expect的包装器。自2010年中期以来,该项目似乎没有任何积极的开发,但我过去曾将它用于SSH。
http://expectj.sourceforge.net/apidocs/expectj/SshSpawn.html
答案 2 :(得分:0)
感谢您的所有答案。我试过Ganymed SSH-2库。它适用于远程计算机上的基本命令。如果遇到SSH-2的任何限制,我将不得不探索其他API。
答案 3 :(得分:-1)
public class triggerPutty {
public static void main(String[] a) {
try {
String command = "putty.exe user@abc.text.com -pw password -m C:\\containing_comman.txt";
Runtime r = Runtime.getRuntime();
Process p = null;
p = r.exec(command);
p.waitFor();
p.destroy();
} catch (Exception e) {
e.printStackTrace();
}
}
}
-m有助于从该文件运行命令。
您可以在该文件中保留N个命令.. ##标题##