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

DSH — запуск команды Linux на нескольких хостах одновременно

Некоторое время назад мы написали руководство, в котором описывалось, как запустить одну команду на нескольких удаленных системах одновременно, используя PSSH в Unix-подобных системах. Сегодня мы собираемся обсудить аналогичный инструмент под названием DSH. Это означает Dраспределенную оболочку (или оболочку танцора). Используя DSH, мы можем запускать команду Linux на нескольких хостах одновременно. Это бесплатная утилита с открытым исходным кодом, написанная на языке программирования C.

Установить ДШ

В Arch Linux и производных:

DSH доступен в AUR, поэтому его можно установить с помощью помощников AUR, например Yay, как показано ниже.

yay -S dsh

В Debian, Ubuntu:

DSH доступен в официальных репозиториях Debian, Ubuntu и других систем на базе DEB, таких как Linux Mint, Elementary OS. Чтобы установить DSH в любой системе на базе DEB, запустите:

sudo apt-get install dsh

Для других дистрибутивов Linux DSH можно скомпилировать и установить вручную, как описано ниже.

Для работы DSH требуется libdshconfig. Вы можете скачать последнюю версию libdshconfig и dsh по этой ссылке.

После загрузки перейдите в каталог, в который вы загрузили оба пакета.

Сначала скомпилируйте и установите libdshconfig с помощью команд:

tar xfz libdshconfig*.tar.gz
cd libdshconfig-*
./configure ; make
sudo make install

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

tar xfz dsh*.tar.gz
cd dsh-*
./configure ; make
sudo make install

Настроить ДШ

Мы установили dsh. Давайте теперь настроим DSH для выполнения команд на нескольких хостах. Для этого сначала отредактируйте файл конфигурации DSH и установите значение удаленной оболочки с rsh на ssh.

В Arch Linux и его производных файлом конфигурации по умолчанию является /etc/kgname/dsh.conf.

Отредактируйте этот файл:

sudo vi /etc/kgname/dsh.conf

Измените значение remoteshell с rsh на ssh.

#default configuration file for dsh.
 # suppled as part of dancer's shell

verbose = 0

remoteshell =ssh
 showmachinenames = 0
waitshell=1 # whether to wait for execution

#remoteshellopt=...

default config file end.

В системах на базе DEB:

sudo vi /etc/dsh/dsh.conf

remoteshell =ssh

В системах на базе RPM:

sudo vi /usr/local/etc/dsh.conf

remoteshell =ssh

Далее нам нужно добавить удаленные хосты, на которых мы хотим выполнять команды.

Для этого создайте/отредактируйте файл machines.list и добавьте удаленные хосты.

В Arch Linux и производных:

sudo vi /etc/kgname/machines.list

Добавьте IP-адрес или имя хоста удаленного хоста один за другим, как показано ниже.

192.168.43.100 
192.168.43.101

В системах на базе DEB:

$ sudo vi /etc/dsh/machines.list
192.168.43.100 
192.168.43.101

В системах на базе RPM:

$ sudo vi /usr/local/etc/machines.list
192.168.43.100
192.168.43.101

Вы можете добавить любое количество удаленных хостов в файл machines.list.

Запустите команду Linux на нескольких хостах одновременно с помощью DSH

После того как вы добавили все удаленные хосты и создали общего пользователя во всех ваших удаленных системах, вы можете выполнить команду Linux на всех удаленных хостах одновременно. Скажем, например, следующая команда выполнит команду uname -r на всех удаленных хостах одновременно.

dsh -a -c uname -r

Он попросит вас ввести имя пользователя и пароль соответствующего удаленного хоста. Если вы не хотите вводить учетные данные пользователя каждый раз при запуске этой команды, просто настройте SSH-вход без пароля.

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

3.10.0-514.16.1.el7.x86_64
4.4.0-34-generic

Как вы видите в приведенном выше выводе, утилита dsh отображает версию ядра двух моих удаленных хостов.

Более подробную информацию можно найти на странице руководства.

man dsh

Рекомендуем прочитать:

  • Выполнение команд в удаленных системах Linux через SSH

Ресурс:

  • Сайт DSH

Статьи по данной тематике