Удаленно выполните команду на ssh-сервере со сценарием

Я хочу выполнить команду на ssh-сервере, но эта команда определяется сценарием на моей локальной машине. Как я делаю это?

Пример для ясности:
Я хочу записать сценарий здесь (foo.sh), который берет аргумент. Если я работаю ./foo.sh 0 это должно так или иначе отправить сигнал завершения работы на машину сервера, но если я работаю ./foo.sh 1 это должно отправить сигнал перезапуска.

Я знаю, как вручную войти в систему через ssh, и я уже установил ssh-ключи для пропуска паролей, но я не знаю, как автоматизировать процедуру со сценарием.

6
задан 3 December 2010 в 08:25

3 ответа

Как прокомментированный Oli, можно сказать SSH отправлять команды. Вы могли изменить свой сценарий так, чтобы, если Ваш аргумент командной строки равняется 1, он отправил ssh user@server "shutdown -h now". Следует иметь в виду, что необходимо будет быть суперпользователем на другой машине для завершения работы его.

Править: Вместо того, чтобы использовать корень, как предлагается в помещенных комментариях user в sudoers файл как способность закрыть машину без пароля.

6
ответ дан 23 November 2019 в 07:21

Можно передать команду (или список команд, разделенных ;) к соединению SSH как это:

ssh user@server-address "./foo 1"

Если у Вас есть локальный сценарий, это производит 0 или 1, можно упростить вещи далее:

ssh user@server-address "./foo `/path/to/your/script`"

Код в обратных галочках выполняется перед чем-либо еще, и его вывод помещается в строку динамично.

8
ответ дан 23 November 2019 в 07:21

Можно использовать runoverssh:

sudo apt install runoverssh
runoverssh -n -s localscript.sh user host

-n будет использовать аутентификацию по умолчанию SSH (Ваши ключи)
-s запускает локальный скрипт удаленно

1
ответ дан 23 November 2019 в 07:21

Другие вопросы по тегам:

Похожие вопросы: