Системным администраторам и владельцам нескольких серверов порой необходимо выполнять ряд одинаковых действий в консоли на этих серверах. И для упрощения этой задачи был создан инструмент под названием DSH, который позволяет выполнять команды на нескольких серверах одновременно.
DSH это сокращение от “Распределенный шелл” или “Шелл танцора”, который свободно доступен для всех основных дистрибутивов Linux. Для того, чтобы установить его, потребуется просто обратиться к своему пакетному менеджеру с командой установки пакета dsh. К примеру, в Debian/Ubuntu:
apt-get install dsh
Конфигурационный файл расположен здесь: /etc/dsh/dsh.conf и он довольно простой. Обратите внимание на параметр remoteshell, вероятней всего там будет указан rsh, что не безопасно. Отредактируйте конфигурационный файл, заменив rsh на ssh.
Было:
remoteshell =rsh
Стало:
remoteshell =ssh
Остальные параметры можно оставить по умолчанию.
Теперь перейдем к настройке списка серверов, с которыми требуется работать. Файл списка находится здесь:/etc/dsh/machines.list
Синтаксис файла такой:
<имя хоста>, <IP-адрес или доменное имя>
Не забудьте настроить ssh-авторизацию по ключу:
После того, как файл списка серверов создан и наполнен содержимым, обратимся ко всем серверам с простой командой “uptime”:
$ dsh -aM -c uptime
Вывод на этот запрос будет примерно таким:
192.168.1.2: 05:11:58 up 140 days, 31 min, 0 users, load average: 0.00, 0.21, 0.03 192.168.1.3: 05:11:47 up 3 days, 18 min, 1 users, load average: 0.04, 0.01, 0.08
Теперь подробней о ключах команды:
- Ключ "-a" позволяет отправить запрос ко всем серверам, указанных в списке.
- Ключ "-M" - отображение имени сервер, которое указано в файле списка серверов, а при выводе ответа на команду.
- Ключ "-c" - непосредственно сама команда, которую требуется выполнить
DSH позволяет так же группировать серверы по какому-либо признаку в файлах, которые располагаются в директории “/etc/dsh/groups/”. И тогда, чтобы определить обращение к какой-либо группе серверов, используется ключ “-g”.
К примеру, давайте запустим команду “w” на всех сервера, находящихся в группе “vps”. Их список находится в файле “/etc/dsh/groups/vps”
dsh -M -g vps -c w
Помимо выполнения команд, DSH можно широко использовать и для передачи файлов, и для установки приложений, и для произведения каких-либо настроек на серверах. И если у вас большой парк серверов, то несомненно, dsh сможет упростить работу с ними.