从windows计算机运行shell命令的Java程序
我试图运行一个Java程序,在远程(Linux)机器上抛出命令。我可以让putty.exe运行,然后使用SSH密钥连接到机器。但我无法运行实际的命令,如“bash”、“ps-ef”或“ls-la”。当前正在使用Java runtime.exec,不确定使用从windows计算机运行shell命令的Java程序,java,shell,runtime.exec,Java,Shell,Runtime.exec,我试图运行一个Java程序,在远程(Linux)机器上抛出命令。我可以让putty.exe运行,然后使用SSH密钥连接到机器。但我无法运行实际的命令,如“bash”、“ps-ef”或“ls-la”。当前正在使用Java runtime.exec,不确定使用Java.lang.ProcessBuilder是否有帮助?我做错了什么?如有任何帮助/指导,将不胜感激。。提前谢谢 package hello; import java.io.*; public class RuntimeExample {
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();
}
}
}
尝试使用Jsch将shell脚本从Java执行到某个远程Linux机器。我已经研究过这一点,这真的很有趣。虽然你可能会发现文档的不足之处,但是你可以很容易地克服它。
也要考虑PurjJ,它是TCL周围的一个包装器。自2010年年中以来,该项目似乎没有任何积极的开发,但我过去曾将其用于SSH
谢谢你的回答。我试着去图书馆。它适用于远程机器上的基本命令。我将不得不探索其他API,以防遇到SSH-2的任何限制
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个命令标题##为什么不使用SSH库,而不是putty?Java的整个要点是抽象的,远离操作系统。在调用本机命令之前,请始终搜索与平台无关的替代方法。在您的示例中,只需使用一个针对Java的SSH实现,例如。感谢您的快速响应。我将检查sshj和Jsch。回避下一个问题,可能是另一个线程。最好的SSH库是什么,它可以帮助您使用SSH密钥连接到远程linux机器并执行CommandsHanks以获得快速响应。我将查看sshj和Jsch。@joule_wonder:欢迎。但如果你选择Jsch:),请确保标记此答案。考虑改进你的答案。