Я провел небольшое исследование использования Maven для выполнения команд на удаленном сервере с помощью некоторого плагина ssh exec.
Что меня беспокоит, так это то, что мне нужно запустить команду, которая запускает некоторую программу, управляемую меню, чтобы остановить сервер, а затем снова запустить его.
В основном мне пришлось бы последовательно выполнять следующие задачи:
- Подключитесь к удаленному серверу с помощью SSH
- Войти с именем пользователя / паролем
- Сменить каталог в определенное место
- Запустите команду в этом месте, чтобы запустить программу, управляемую из меню командной строки (например, "
./control
") - Введите две команды в эту программу, управляемую меню
- Отключить
Две команды - это просто числа, которые представляют варианты из меню, которое выводится на консоль, например:
Enter the number of the server you wish to stop:
[1] server1
[2] server2
[3] server3
Я бы, например, ввел "2". Это возможно?
1 ответ
Одно из возможных решений - написать сценарий Perl на удаленном сервере, который принимает номер сервера в качестве аргумента.
Затем вы можете использовать библиотеку Perl Expect.pm, чтобы передать этот аргумент в ваша программа control
, когда она запрашивает ввод.
Затем это упрощает вашу задачу Maven до выполнения сценария на удаленном сервере, что, по-видимому, теперь вас устраивает благодаря вашему исследованию.
(Если вы не использовали ее раньше, библиотека Perl Expect предназначена именно для этого случая использования - автоматически предоставляет ввод для интерактивных программ командной строки.)
Похожие вопросы
Новые вопросы
unix
ВНИМАНИЕ: Все вопросы по Unix должны быть связаны с программированием; те, которые не будут закрыты. Используйте этот тег, только если ваш вопрос касается программирования с использованием API-интерфейсов Unix или поведения, специфичного для Unix, а не только потому, что вы запускаете свой код в Unix. Общие проблемы с программным обеспечением следует направлять в Unix & Linux Stack Exchange или привилегированному пользователю.