Выполнение сценария Unix из Java - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь запустить сценарий оболочки Unix из Java, который доступен в определенном каталоге на сервере Unix. Этот скрипт принимает параметры. Я смог установить соединение SFTP и успешно добрался до каталога, в котором находится сценарий оболочки. Как мне запустить этот скрипт и как передать параметры? Получил несколько ссылок на https://netjs.blogspot.com/2016/10/how-to-run-shell-script-from-java-program.html но здесь скрипт доступен в локальной системе. В моем случае скрипт находится на сервере и также принимает параметры.

Ответы [ 3 ]

0 голосов
/ 09 января 2019

Ваша Java-функция основана на объекте Runtime. Я не уверен, но думаю, что вы не можете получить объект Runtime на удаленной машине, поэтому вам нужно поместить CLASS-файл на эту удаленную машину и запустить его там.

0 голосов
/ 09 января 2019

Другой способ - выполнить команду через SSH. Вы создаете новый скрипт на своем локальном хосте (мой пример test.sh) с содержимым, как показано ниже, и теперь вы можете выполнить его так же, как вы получаете из ваших ссылок.

ssh user@server "sh your-shell-script-in-server.sh"

Подробнее на https://www.cyberciti.biz/faq/unix-linux-execute-command-using-ssh/

Источник Java:

    String[] cmd = new String[] { "/bin/sh", "test.sh" };
    try {
        Process pr = Runtime.getRuntime().exec(cmd);
        int rs = pr.waitFor();
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }
0 голосов
/ 09 января 2019

SFTP - протокол передачи файлов (Secure File Transfer Protocol). Это позволяет передавать файлы на сервер и с сервера. Тем не менее, не позволяет выполнять любой сценарий на удаленном сервере, поскольку это не то, для чего он предназначен.

Если вы хотите выполнить скрипт на удаленном сервере, вам необходимо:

  • Установить ssh соединение
  • Выполнить скрипт из этого соединения

Вам нужно использовать такую ​​библиотеку, как JSch, , вот пример.

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