DSH Distributed Shell - выполнение команд на нескольких серверах Linux

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

Чтобы частично решить эту задачу, я покажу вам, как использовать небольшой инструмент под названием DSH (dancer’s shell/distributed shell), который позволяет админу выполнять команды на нескольких машинах.

Что такое DSH?

DSH – это сокращение от Distributed Shell или Dancer’s Shell, который является свободно распространяемым инструментом в большинстве основных дистрибутивов Linux, но может быть легко собран из исходников, если ваш дистрибутив не включает его в свой репозиторий пакетов.

Установка DSH (Distributed Shell) в Linux

В рамках данного руководства мы будем рассматривать среду Debian/Ubuntu. Если вы используете другой дистрибутив, пожалуйста, замените соответствующие команды для вашего пакетного менеджера.

В дистрибутивах на базе Debian вы можете установить DSH с помощью следующей команды apt в терминале.

sudo apt install dsh

В дистрибутивах на базе RHEL вам нужно скомпилировать его из исходников, но перед этим убедитесь, что скомпилировали и установили библиотеку libdshconfig.

wget http://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-0.20.10.cvs.1.tar.gz
tar xfz libdshconfig*.tar.gz 
cd libdshconfig-*
./configure ; make
sudo make install

Тогда скомпилируйте dsh и установите.

wget https://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.22.0.tar.gz
tar xfz dsh-0.22.0.tar.gz
cd dsh-*
./configure ; make 
sudo make install

Как использовать DSH в Linux

Основной конфигурационный файл /etc/dsh/dsh.conf (для Debian) и /usr/local/etc/dsh.conf (для Red Hat) довольно прост, но поскольку rsh является незашифрованным протоколом, мы будем использовать SSH в качестве удаленной оболочки.

Воспользовавшись текстовым редактором по вашему выбору, найдите эту строку:

remoteshell =rsh

и измените ее на:

remoteshell =ssh

При желании вы можете передать сюда и другие параметры, которые можно найти на странице man dsh. Пока же мы примем значения по умолчанию и посмотрим на следующий файл /etc/dsh/machines.list (для Debian).

Для систем на базе Red Hat вам нужно создать файл под названием machines.list в каталоге /usr/local/etc/.

Синтаксис здесь довольно прост. Все, что вам нужно сделать, это ввести учетные данные машины (Hostname, IP Address или FQDN) по одной в строку.

Примечание: При одновременном доступе к нескольким машинам целесообразно настроить SSH без пароля на основе ключей на всех машинах. Это не только упрощает доступ, но и повышает безопасность вашей машины.

Мой файл /etc/dsh/machines.list или /usr/local/etc/machines.list:

172.16.25.125
172.16.25.126

После ввода учетных данных машин, к которым вы хотите получить доступ, давайте запустим простую команду типа uptime на всех машинах.

dsh -aM -c uptime

Пример вывода:

172.16.25.125: 05:11:58 up 40 days, 51 min, 0 users, load average: 0.00, 0.01, 0.05
172.16.25.126: 05:11:47 up 13 days, 38 min, 0 users, load average: 0.00, 0.01, 0.05

Итак, что делает команда „dsh“?

Довольно просто. Сначала мы запустили dsh и передали ей опцию -a, которая говорит, что нужно отправить команду «uptime» на «ВСЕ» машины, перечисленные в «/etc/dsh/machines.list».

Следующим мы указали опцию -M, которая говорит, что нужно вернуть «имя машины» (указанное в «/etc/dsh/machines.list») вместе с результатом команды uptime. (Очень полезно для сортировки при выполнении команды на нескольких машинах).

Опция -c означает «команда для выполнения», в данном случае «uptime».

DSH также может быть настроен на группы машин в файле «/etc/dsh/groups/», где находится файл со списком машин в том же формате, что и файл «/etc/dsh/machines.list». При запуске dsh на группе, укажите имя группы после опции -g.

Для систем на базе Red Hat необходимо создать папку «groups» в каталоге «/usr/local/etc/». В каталоге «groups» создается файл «cluster».

Например, выполните команду w на всех машинах, перечисленных в групповом файле «cluster» «/etc/dsh/groups/cluster» или «/usr/local/etc/groups/cluster».

dsh -M -g cluster -c w

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

Для системного администратора, на которого возложена ответственность за работу большой сети, это бесценно.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.tecmint.com

Похожие статьи

Комментарии (0)