Выполнить список команд Unix, используя ssh - PullRequest
2 голосов
/ 15 марта 2011

Я хочу запустить один и тот же набор команд Unix на нескольких машинах. Я знаю о SSH и что-то вроде ниже. Я хочу написать скрипт для этого. У меня есть доступ к bash и ksh, и я использую Linux Red Hat 5.

ssh root@ip "echo \$HOME"

Однако у меня есть 2 вопроса:

  1. Мне постоянно предлагается ввести пароль. Как можно, чтобы он не подсказывал мне и вводил пароль автоматически?
  2. Как выполнить несколько команд?

Ответы [ 3 ]

7 голосов
/ 15 марта 2011
  1. Вы должны использовать аутентификацию на основе ключа , возможно, в сочетании с ssh-agent, чтобы запомнить ключевую фразу.

  2. Вы можете вызвать sh -c в качестве команды и передать ей строку, содержащую список команд для выполнения. ssh вызвать оболочку на удаленном компьютере, чтобы вы могли передать список команд в виде строки.

Например:

$ ssh user@ip "echo 'Hello world'; whoami; cd / ; ls"
1 голос
/ 15 марта 2011

Используйте ssh-agent, чтобы настроить аутентификацию для всех команд. Или поместите несколько команд в один сценарий оболочки.

0 голосов
/ 01 июня 2016

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

  • использование ", разрыв строки для форматирования кода и завершение каждого подстановки с помощью ;.
    Недостаток: " должен не использоваться внутри списка команд.

    ssh user@ip "\
      echo 'Hallo sir, how are you doing?';\
      whoami;\
      cd /;\
      ls\
    "
    
  • использовать ' и форматировать код с регулярными переносами строк.
    Недостаток: ' должен не использоваться внутри списка команд.

    ssh user@ip '
      echo "Hallo sir, how are you doing?"
      whoami
      cd /
      ls
    '
    

Примечание : использование " или ' внутри соответствующих операторовне обязательно приводит к ошибке.Хотя вы можете получить неожиданные результаты.

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