使用Java从另一台计算机运行脚本

时间:2011-08-17 10:58:48

标签: java network-programming remote-desktop

我在同一个网络中有3台计算机。我想编写一个java程序,以便在其他机器上运行一些脚本。我的机器运行Windows,其他机器分别运行Linux和Windows。

有关它的任何想法?我展示了一些关于远程机器的解决方案,但我希望有一种更简单的方法,因为我的电脑在同一个网络中。

6 个答案:

答案 0 :(得分:2)

对于linux,您可以使用ssh执行远程命令

答案 1 :(得分: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) {
    }
    

    }

  2. 在客户端

    套接字套接字=新套接字(“serverip”,1234);

    OutputStream os = socket.getOutputStream();

    os.write(“echo hello”);

    os.flush();

    os.close();

    socket.close();

  3. 你可以在哪里使用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