Я провел небольшое исследование использования Maven для выполнения команд на удаленном сервере с помощью некоторого плагина ssh exec.

Что меня беспокоит, так это то, что мне нужно запустить команду, которая запускает некоторую программу, управляемую меню, чтобы остановить сервер, а затем снова запустить его.

В основном мне пришлось бы последовательно выполнять следующие задачи:

  1. Подключитесь к удаленному серверу с помощью SSH
  2. Войти с именем пользователя / паролем
  3. Сменить каталог в определенное место
  4. Запустите команду в этом месте, чтобы запустить программу, управляемую из меню командной строки (например, "./control")
  5. Введите две команды в эту программу, управляемую меню
  6. Отключить

Две команды - это просто числа, которые представляют варианты из меню, которое выводится на консоль, например:

Enter the number of the server you wish to stop:
[1] server1
[2] server2
[3] server3

Я бы, например, ввел "2". Это возможно?

1
Trant 17 Янв 2013 в 06:50
Итак, как далеко вы зашли в этом? Вы просто застряли на шаге 5?
 – 
Duncan Jones
17 Янв 2013 в 12:17

1 ответ

Лучший ответ

Одно из возможных решений - написать сценарий Perl на удаленном сервере, который принимает номер сервера в качестве аргумента.

Затем вы можете использовать библиотеку Perl Expect.pm, чтобы передать этот аргумент в ваша программа control, когда она запрашивает ввод.

Затем это упрощает вашу задачу Maven до выполнения сценария на удаленном сервере, что, по-видимому, теперь вас устраивает благодаря вашему исследованию.

(Если вы не использовали ее раньше, библиотека Perl Expect предназначена именно для этого случая использования - автоматически предоставляет ввод для интерактивных программ командной строки.)

0
Duncan Jones 17 Янв 2013 в 12:21