avatar FAQ Удаленное выполнение команд через ssh

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

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

Представим ситуацию, нам нужно зайти на сервера и перезапустить определенный сервис, например nginx, тогда в скрипт имеет вид:

#!/bin/bash
while read HOST ; do echo connect to $HOST; ssh $HOST "sudo service nginx restart" < /dev/null; done < server_list.txt 


Нам остается в директорию со скриптом положить список серверов в файле server_list.txt содержащий адреса серверов вида:
server1.example.org
server2.example.org
test3.example.org
test4.example.org
web5.example.org


запускаем
sh remote_command.sh


В консоли «выхлоп» работы скрипта будем иметь следующий вид:
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

Если команда сложная и выполняется долго, а список серверов большой, то можно заняться чем-то другим, более интересным, а скрипт все сделает за вас.
на этом я и закончу, благодарю за внимание.
  • +1
  • avatar     

0 комментариев

Есть что добавить? Регистрируйся и оставляй комментарии!