Запустите скрипт с другого компьютера, используя Java - PullRequest
1 голос
/ 17 августа 2011

У меня есть 3 компьютера в одной сети.Я хочу написать Java-программу для запуска некоторых скриптов на других машинах.Моя машина работает под управлением Windows, а остальные работают под управлением Linux и Windows соответственно.

Есть идеи по этому поводу?Я показываю некоторые решения об удаленных машинах, но надеюсь, что будет проще, потому что мои компьютеры находятся в одной сети.

Ответы [ 6 ]

2 голосов
/ 17 августа 2011

Для Linux вы можете использовать ssh для выполнения удаленной команды

1 голос
/ 17 августа 2011

В дополнение к ответу @ corsair: вы можете использовать SSH для Linux, Telnet для Linux и Windows.Есть несколько чистых библиотек Java, которые реализуют SSH и Telnet.Взгляните на http://www.jcraft.com/jsch/ и http://commons.apache.org/net/

1 голос
/ 17 августа 2011
  1. Создайте серверный сокет или сервер RMI / XMLRPC на каждой из машин.

    ServerSocket serverSocket = новый 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, вы можете сделать

    try {

    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) {
    

    }

0 голосов
/ 17 декабря 2013

Вам нужно SSH / Telnet, а затем запустить скрипт ... Проверьте это http://www.queryhome.com/24981/how-to-connect-to-a-linux-machine-in-same-network-using-java

0 голосов
/ 17 августа 2011

Не используйте Java для этой задачи, если это возможно.Используйте систему удаленного управления, например OpenRSM (http://openrsm.sourceforge.net/).

0 голосов
/ 17 августа 2011

Java не лучший инструмент для этого.Тем не менее, если вы хотите работать с Java, вам необходимо настроить сервер на каждой из удаленных машин.Сервер - это процесс, который всегда работает и слушает порт;из этого порта он получит сообщение для запуска сценариев.

Если сценарии безопасны (если они выполняются в неправильное время, никакого вреда не причинено), вы можете сделать это только с помощью ServerSocket.Если они небезопасны (вам нужно убедиться, что только вы можете запустить процесс, я бы посоветовал использовать веб-сервер (Jetty, Tomcat) для использования его возможностей безопасности (SSL / HTTPS, аутентификация).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...