Поиск по сайту:

DSH (Dancer's Shell) — запуск команд на нескольких хостах Linux


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

Чтобы частично выполнить эту задачу, я собираюсь показать вам, как использовать изящный небольшой инструмент под названием DSH (оболочка танцора/распределенная оболочка), который позволяет пользователю запускать команды на нескольких машинах.

Что такое ДШ?

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

Установите DSH (распределенную оболочку) в Linux

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

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

sudo apt install dsh

В дистрибутивах на основе RHEL вам необходимо скомпилировать его из исходных файлов tar, но перед этим обязательно скомпилируйте и установите библиотеку «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

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

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

Синтаксис здесь довольно прост. Все, что вам нужно сделать, это ввести учетные данные компьютера (Имя хоста, IP-адрес или FQDN) по одному в каждой строке.

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

Мой файл «/etc/dsh/machines.list» или «/usr/local/etc/machines.list» говорит:

172.16.25.125
172.16.25.126

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

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» означает «команда для выполнения», в данном случае «время безотказной работы».

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 можно использовать для передачи файлов, установки программного обеспечения, добавления маршрутов и многого другого.

Для Системного администратора, отвечающего за большую сеть, это бесценно.