Распределенная командная оболочка

Системным администраторам и владельцам нескольких серверов, порой необходимо выполнять ряд одинаковых действий в консоли на этих серверах. И для упрощения этой задачи был создан инструмент под названием 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 сможет упростить работу с ними.

Автор статьи:

Сабынич Вадим

Аватар пользователя vadim s. sabinich
Вернуться