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