我在同一个网络中有3台计算机。我想编写一个java程序,以便在其他机器上运行一些脚本。我的机器运行Windows,其他机器分别运行Linux和Windows。
有关它的任何想法?我展示了一些关于远程机器的解决方案,但我希望有一种更简单的方法,因为我的电脑在同一个网络中。
答案 0 :(得分:2)
对于linux,您可以使用ssh执行远程命令
答案 1 :(得分:1)
在每台计算机上创建serverSocket或RMI / XMLRPC服务器。
ServerSocket serverSocket = new ServerSocket(1234);
while(true){
try {
Socket socket = serverSocket.accept();
BufferedReader reader = new BufferedReader(socket.getInputStream());
// exec a command sent by the client
Runtime.getRuntime().exec(reader.readLine());
// or
// a static command
} catch (Exception ex) {
}
}
在客户端
套接字套接字=新套接字(“serverip”,1234);
OutputStream os = socket.getOutputStream();
os.write(“echo hello”);
os.flush();
os.close();
socket.close();
你可以在哪里使用linux机器
尝试{
Socket socket = new Socket("serverip",21); // connect to telnet port
OutputStream os = socket.getOutputStream();
// wait for server prompt
Thread.sleep(1000);
os.write("username\n");
// wait for server prompt
Thread.sleep(1000);
os.write("password\n");
Thread.sleep(1000);
os.write("~/xyz/run.sh");
os.close();
socket.close();
} catch(Exception ex) {
}
答案 2 :(得分:1)
除了@ corsair的回复:您可以使用SSH进行Linux,使用Telnet进行Linux和Windows。 有几个纯Java库实现了SSH和Telnet。请查看http://www.jcraft.com/jsch/和http://commons.apache.org/net/
答案 3 :(得分:0)
Java不是最好的工具。但是,如果您想使用Java,则需要在每台远程计算机中设置服务器。服务器基本上是一个始终运行并侦听端口的进程;从该端口,它将收到运行脚本的消息。
如果脚本是安全的(如果它们在错误的时间运行没有造成任何伤害),您可以使用ServerSocket
进行操作。如果它们不安全(您需要确保只有您能够启动该过程,我建议使用Web服务器(Jetty,Tomcat)来使用其安全功能(SSL / HTTPS,身份验证)。
答案 4 :(得分:0)
如果可能,请不要使用Java执行此任务。使用远程管理系统,如OpenRSM(http://openrsm.sourceforge.net/)。
答案 5 :(得分:0)
您需要SSH / Telnet,然后运行脚本...... 请检查此http://www.queryhome.com/24981/how-to-connect-to-a-linux-machine-in-same-network-using-java