Я чувствую себя немного глупо, задавая вопрос, который может показаться подходящим для Google, но я пытаюсь записать повторяющуюся задачу (1) ssh'ing на удаленный сервер (2) с запуском script.sh в моем домашнем каталоге, и (3) копирование / вставка вывода.
Было бы здорово, если бы я мог написать сценарий, который сделает эту работу за меня. Я написал несколько сценариев bash, которые scp
файлы с этих машин, но никогда не запускал сценарии на этих машинах.
Возможно ли иметь скрипт на машине 1 и войти в систему и выполнить script.sh на машине 2 через машину пСбрасывает вывод на машину 1? Если да, то как?
Это просто:
ssh пользователь @ хост команда
команда = дополнить трубами и т.п. по мере необходимости.
Подобно ответу Джеффри, но с однострочным циклом.
for i in "server1 server2 otherserver"; do ( ssh username@$i yourcommand & ); done
Это позволяет вам запускать каждую задачу в фоновом режиме, поэтому вся команда займет немного времени с вашей рабочей станции. Если вы используете аутентификацию на основе пароля, вам необходимо:
Поэтому я думаю, что реальный вопрос здесь в том, как перенести сценарий с машины 1 на машину 2, чтобы вы могли его выполнить, верно? Есть несколько способов сделать это. Вы можете использовать сценарий на компьютере 1, который сначала использует scp для передачи файла сценария. script
к машине 2, а затем работает ssh machine2 script
.
Это хорошо работает, если у вас настроена аутентификация с открытым ключом, поэтому вам не нужно будет вводить пароли. Если вам нужно вводить пароль каждый раз, когда вы входите в machine2, вам нужно изучить подходы с использованием expect
, как подробно описано в эта публикация stackoverflow. Вы должны иметь возможность использовать autoexpect для быстрого написания необходимого сценария ожидания.
Другие подходы включают в себя nfs-монтирование общего каталога на всех хостах. В этом сценарии вы копируете файл сценария в этот каталог на машине1, а затем он становится доступным на машине2 и всех других машинах, подключенных к тому же монтированию nfs.
Наконец, это проблема, которую инструменты управления конфигурацией, такие как cfengine и кукольный решить с помощью какого-то механизма доставки файлов. В этой настройке клиентские машины подключаются к центральному серверу и загружают файл сценария перед его выполнением.