Как автоматизировать аналогичные команды для нескольких серверов через SSH?

Как автоматизировать аналогичные команды для нескольких серверов через SSH?

У меня есть x серверов, к которым я могу подключиться по SSH с помощью паролей. Если мне нужно подключиться только к 1, я сделаю ssh root@IPaddress. Затем он запросит мой пароль, и после аутентификации я смогу выполнять там команды.

Что делать, если у меня есть x серверов, все они одинаковы, и я хочу выполнить одну и ту же команду на каждом из них? Как я могу сделать это с помощью одной или двух команд?

решение1

Похоже, вам нужен инструмент подготовки, такой какansible,солончак,шеф-повариликукольный.

Ansible работает очень похоже на то, что вам нужно, вы запускаете его локально, и он подключается к удаленным серверам по sshs для выполнения команд (нет необходимости устанавливать агента на удаленных серверах, как другие продукты, перечисленные выше). Например, имея список серверов, /etc/ansible/hostsвы можете запустить ansible all -a "/bin/echo hello"для выполнения указанной команды на всех серверах. Полное руководствоздесь.

Но в дополнение к этому вы можете начать создавать сборники полезных команд, которые позволят вам повторно запускать их на хостах в будущем и работать над автоматизацией управления вашей инфраструктурой.

В качестве альтернативы вы можете использовать такие команды, какпсшдля параллельного выполнения пакетных команд или с использованиемсинхронизировать-панелифункция tmux для интерактивного запуска команд на нескольких хостах.

решение2

  1. Выполнение одной и той же команды(команд) на нескольких хостах

Что делать, если у меня есть x серверов, все они одинаковы, и я хочу выполнить одну и ту же команду на каждом из них? Как я могу сделать это с помощью одной или двух команд?

Вы можете запустить скрипт, который получает в качестве параметра имя хоста, и выполнить те же команды для имени хоста в параметре

  1. Подключение через SSH к нескольким серверам

Настоятельно рекомендуется использовать пару ключей SSH, тогда SSH-связь будет беспарольной.

видетьэтот ответ

решение3

Вы можете использоватьMobaXtremкак SSH-клиент, он имеет функцию MultiExec, которая позволяет выполнять одни и те же команды на всех открытых терминалах.

Связанный контент