Віддалене виконання команд через ssh

Вирішив поділитися своєю маленькою напрацюванням. Бувають ситуації коли необхідно виконати однотипні дії на безлічі серверів, можна лазити руками, але коли у вас кілька десятків, а то і більше, систем, то це стає довго і виснажливо, цей процес можна автоматизувати.
Для цього я написав зовсім маленький скрипт, він бере список серверів, підключається до них по ssh виконує команду і відключається і так по всьому списку. також він пише в консоль ім'я сервера до якого він підключений в даний момент. Даний спосіб буде працювати на всіх Nix системах! На віддалених машинах повинен бути дозволений вхід по ключу, про те як його налаштувати можна прочитати в статті: Вхід ssh по ключу. також якщо якщо якісь дії вимагають підвищення привілеїв в системі, то необхідно вирішити запуск sudo без пароль, про томи як це зробити можна прочитати в статті: sudo без пароля

Для цього нам необхідно створити 2 файли:
1 - сам скрипт назвемо його remote_command.sh
2 - server_list.txt список серверів

Уявімо ситуацію, нам потрібно зайти на сервера і перезапустити певний сервіс, наприклад nginx, тоді в скрипт має вигляд:


В консолі «вихлоп» роботи скрипта будемо мати такий вигляд:
connect to server1.example.org
connect to server2.example.org
connect to test3.example.org
connect to test4.example.org
connect to web5.example.org
Якщо команда складна і виконується довго, а список серверів великий, то можна зайнятися чимось іншим, більш цікавим, а скрипт все зробить за вас.
на цьому я і закінчу, дякую за увагу.

Схожі статті