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

Запуск одной команды на нескольких удаленных системах одновременно с использованием PSSH

Некоторое время назад мы опубликовали руководство по "копированию файла в несколько каталогов с помощью командной строки в Linux". В этой статье мы научили вас различным методам копирования одного файла в несколько каталогов одновременно. Сегодня мы увидим, как запустить одну команду на нескольких удаленных системах одновременно в Unix-подобных операционных системах. Как вы уже знаете, мы можем получить доступ и общаться с удаленной системой, используя ssh. openSSH позволяет нам выполнять все виды задач администрирования в удаленной системе. Одним из ограничений openSSH является то, что мы не можем выполнять одну команду на нескольких удаленных системах одновременно. Без проблем. Именно здесь PSSH восполняет этот пробел.

Что такое ПСШ?

PSSH или Parallel SSH — это пакет командной строки, который помогает параллельно использовать ssh на нескольких хостах. Пакет PSSH состоит из следующих команд:

  • pssh — SSH к нескольким удаленным системам параллельно,
  • pscp — параллельное копирование файлов на несколько хостов.
  • prsync : параллельное копирование файлов на несколько хостов.
  • pnuke: завершить процессы параллельно на нескольких хостах,
  • pslurp: параллельное копирование файлов с нескольких хостов.

В этом уроке мы увидим, как выполнить одну команду на нескольких хостах одновременно, используя PSSH.

Установите PSSH в Linux

Мы можем легко установить PSSH с помощью PIP, менеджера пакетов Python.

Чтобы установить PIP в Arch Linux и его производных, запустите:

sudo pacman -S python-pip

В RHEL, Fedora, CentOS:

sudo yum install epel-release
sudo yum install python-pip

В последней версии RHEL и его клонах (AlmaLinux и Rocky Linux) запустите:

sudo dnf install epel-release
sudo dnf install python-pip

В Debian, Ubuntu, Linux Mint, Pop OS:

sudo apt-get install python-pip

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

  • Как управлять пакетами Python с помощью Pip

После установки PIP выполните следующую команду, чтобы установить PSSH.

sudo pip install pssh

ПСШ установлен! Давайте продолжим и посмотрим, как его использовать.

Запуск одной команды на нескольких удаленных системах одновременно с использованием PSSH

Важно! Чтобы использовать PSSH (только для целей данного руководства), все ваши удаленные системы должны иметь общее имя пользователя с одинаковым паролем. В противном случае этот метод не поможет. Скажем, например, я уже создал пользователя с именем sk и паролем ostechnix на всех моих удаленных хостах. У вас также должен быть один и тот же пользователь с одним и тем же паролем во всех ваших удаленных системах.

Теперь давайте посмотрим, как запустить одну команду на нескольких удаленных хостах с помощью PSSH. Перейдите в свою локальную систему, где вы хотите запустить команду, и создайте текстовый файл с именем remotehosts.txt. Вы можете назвать его по своему желанию.

vi remotehosts.txt

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

192.168.1.103:22
192.168.1.104:22

Где 192,168.1.103 и 192.168.1.104 — IP-адреса моих удаленных систем. 22 — номер порта SSH. Вам необходимо указать правильный номер порта, если вы его уже изменили. Кроме того, убедитесь, что вы можете получить доступ ко всем удаленным хостам из вашей локальной системы через ssh.

Теперь давайте проверим время безотказной работы обоих удаленных хостов из нашей локальной системы. Для этого запустите:

pssh -h remotehosts.txt -l sk -A -i "uptime"

Здесь,

  • remotehosts.txt — содержит IP-адреса обеих удаленных систем.
  • sk — имя пользователя обеих удаленных систем.

Введите пароль пользователя "sk".

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

Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 20:51:15 [SUCCESS] 192.168.1.103:22
 20:50:50 up 8 min, 1 user, load average: 0.05, 0.11, 0.10
[2] 20:51:15 [SUCCESS] 192.168.1.104:22
 20:50:52 up 12 min, 1 user, load average: 0.00, 0.07, 0.12

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

А как насчет версии ядра? Чтобы проверить установленную версию обоих удаленных хостов, запустите:

pssh -h remotehosts.txt -l sk -A -i "uname -r"

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

Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 20:53:09 [SUCCESS] 192.168.1.103:22
3.10.0-327.22.2.el7.x86_64
[2] 20:53:09 [SUCCESS] 192.168.1.104:22
4.4.0-21-generic

Очень круто, не так ли? Можем ли мы создать каталог на обоих удаленных хостах одновременно? Да, конечно! Для этого выполните следующую команду:

pssh -h remotehosts.txt -l sk -A -i "mkdir dir1"

Точно так же вы можете делать все, что захотите, на нескольких удаленных хостах из вашей локальной системы, используя PSSH.

Важно! Будьте очень осторожны при использовании PSSH. Одна неверная команда будет выполняться одновременно на нескольких хостах и повредит все хосты. Поэтому будьте очень осторожны при использовании этого метода в производстве. Я предлагаю вам проверить это на виртуальных машинах. Ознакомившись с PSSH, вы можете использовать его в рабочей среде, если захотите.

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

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

Надеюсь это поможет.

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