Pssh - выполнение команд на нескольких удаленных серверах Linux

Несомненно, OpenSSH – один из самых распространенных и мощных инструментов для Linux, который позволяет безопасно подключаться к удаленным Linux-системам и безопасно передавать файлы на удаленные системы в обе стороны.

Но самый большой недостаток OpenSSH в том, что вы не можете выполнить одну и ту же команду на нескольких хостах одновременно.

Вот тут-то и пригодится инструмент Parallel SSH или PSSH – это приложение на базе Python которое позволяет выполнять команды на нескольких хостах параллельно в одно и то же время.

PSSH запускает параллельные версии OpenSSH и связанные с ним инструменты, такие как:

  • pssh – программа для параллельного запуска ssh на нескольких удаленных хостах.
  • pscp – программа для параллельного копирования файлов на несколько хостов.
  • prsync – программа для эффективного параллельного копирования файлов на несколько хостов.
  • pnuke – параллельно убивает процессы на нескольких удаленных узлах.
  • pslurp – параллельно копирует файлы с нескольких удаленных узлов на центральный.

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

Установка PSSH в Linux

Здесь мы рассмотрим установку PSSH на дистрибутивы на базе RHEL, такие как Fedora, CentOS, Rocky и AlmaLinux а также на дистрибутивы на базе Debian такие как Ubuntu и Linux Mint с помощью команды pip.

Команда pip – это небольшая программа (замена скрипта easy_install) для установки и управления пакетами программ на языке Python index.

В дистрибутивах на базе RHEL

В дистрибутивах RHEL для установки PSSH с помощью yum или dnf необходимо сначала установить пакет pip (т.е. python-pip).

yum install python-pip
OR
dnf install python-pip

После установки инструмента pip вы можете установить пакет pssh.

pip install pssh

На Debian

В дистрибутивах на базе Debian установка pssh с помощью команды pip займёт минуту.

sudo apt install python-pip
sudo pip install pssh

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

При использовании pssh вам необходимо создать файл host с количеством хостов, IP-адресом и номером порта, которые нужны для подключения к удалённым системам с помощью pssh.

Строки в файле host имеют следующий вид и могут также включать пустые строки и комментарии.

192.168.0.10:22
192.168.0.11:22

Выполнение одной команды на нескольких Linux-серверах

Вы можете выполнить любую команду на разных или нескольких Linux-хостах в сети, выполнив команду pssh. Существует множество вариантов использования команды pssh, которые описаны ниже:

Мы рассмотрим несколько способов выполнения команд на нескольких хостах с помощью команды pssh с различными опциями.

  • Чтобы прочитать файл хоста, включите опцию -h host_file-name или --hosts host_file_name.
  • Чтобы включить имя пользователя по умолчанию для всех хостов, которые не определяют конкретного пользователя, используйте опцию -l username или --user username.
  • Вы также можете отображать стандартный вывод и стандартную ошибку по мере завершения работы каждого хоста. Используя опцию -i или --inline.
  • Вы можете сделать так, чтобы соединения завершались через заданное количество секунд, включив опцию -t number_of_seconds.
  • Чтобы сохранить стандартный вывод в заданный каталог, вы можете использовать опцию -o /directory/path.
  • Чтобы запросить пароль и отправить его в SSH, используйте опцию -A.

Давайте рассмотрим несколько примеров и использование команд pssh:

Выполнение команд на нескольких Linux-хостах

Чтобы выполнить команду echo "Hello TecMint" на терминале нескольких Linux-хостов от имени пользователя root и запросить пароль пользователя root.

Важно: Помните, что все хосты должны быть включены в файл host.

pssh -h pssh-hosts -l root -A echo "Hello TecMint"
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 15:54:55 [SUCCESS] 192.168.0.10:22
[2] 15:54:56 [SUCCESS] 192.168.0.11:22

Примечание: В приведенной выше команде «pssh-hosts» – это файл со списком IP-адресов и номеров портов SSH удаленного Linux-сервера, на котором вы хотите выполнять команды.

Узнать используемое место на дисках

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

pssh -h pssh-hosts -l root -A -i "df -hT"
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 16:04:18 [SUCCESS] 192.168.0.10:22
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/sda3      ext4    38G  4.3G   32G  12% /
tmpfs          tmpfs  499M     0  499M   0% /dev/shm
/dev/sda1      ext4   190M   25M  156M  14% /boot
[2] 16:04:18 [SUCCESS] 192.168.0.11:22
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        30G  9.8G   20G  34% /
devtmpfs                devtmpfs  488M     0  488M   0% /dev
tmpfs                   tmpfs     497M  148K  497M   1% /dev/shm
tmpfs                   tmpfs     497M  7.0M  490M   2% /run
tmpfs                   tmpfs     497M     0  497M   0% /sys/fs/cgroup
/dev/sda1               xfs       497M  166M  332M  34% /boot

Узнать uptime серверов

Если вы хотите узнать время работы нескольких Linux-серверов, выполните следующую команду.

pssh -h pssh-hosts -l root -A -i "uptime"<pre>
<pre>Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 16:09:03 [SUCCESS] 192.168.0.10:22
 16:09:01 up  1:00,  2 users,  load average: 0.07, 0.02, 0.00
[2] 16:09:03 [SUCCESS] 192.168.0.11:22
 06:39:03 up  1:00,  2 users,  load average: 0.00, 0.06, 0.09

Залючение

Parallel SSH или PSSH – это хороший инструмент для выполнения команд в среде, где системному администратору приходится работать с множеством серверов в сети. Он облегчает удаленное выполнение команд на разных хостах сети.

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

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

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

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

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