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

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

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

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

Инструмент PSSH включает в себя параллельные версии OpenSSH и сопутствующие инструменты, такие как:

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

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

Установка PSSH или Parallel SSH в Linux

В этой статье мы рассмотрим шаги по установке последней версии программы PSSH (точнее версии 2.3.1) на дистрибутивы RHEL, такие как Fedora, CentOS Stream, Rocky и AlmaLinux. А также на дистрибутивы на базе Debian, такие как Ubuntu и Linux Mint.

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

Установка PSSH в дистрибутивы на базе RHEL

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

yum install python-pip

ИЛИ

dnf install python-pip

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

=

pip install pssh

Установка PSSH в дистрибутивы на базе Debian

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

sudo apt install python-pip

sudo pip install pssh

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

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

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

192.168.0.10:22
192.168.0.11:22

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

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

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

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

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

Выполнение команд на нескольких серверах (машинах) Linux

Чтобы выполнить команду echo “setiwik” в терминале нескольких Linux машин от имени пользователя root и запросить пароль пользователя root, выполните следующую команду.

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

pssh -h pssh-hosts -l root -A echo "setiwik"
Выполнение команд на нескольких серверах (машинах) Linux
Выполнение команд на нескольких серверах (машинах) Linux

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

Просмотр использования диска на нескольких хостах Linux

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

pssh -h pssh-hosts -l root -A -i "df -hT"

Просмотр использования диска на нескольких хостах Linux
Просмотр использования диска на нескольких хостах Linux

Просмотр времени безотказной работы нескольких Linux хостов одновременно

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

pssh -h pssh-hosts -l root -A -i "uptime"

Просмотр времени безотказной работы нескольких Linux хостов одновременно
Просмотр времени безотказной работы нескольких Linux хостов одновременно

Вы можете просмотреть страницу помощи для команды pssh, чтобы получить множество других вариантов использования pssh.

pssh --help

Заключение

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

Надеемся, что это руководство будет вам полезно, а в случае возникновения дополнительной информации о pssh или ошибок при его установке или использовании, не стесняйтесь оставлять комментарии.

Nazario

Я — Nazario, создатель и автор сайта linuxwin.ru, специализируюсь на информационных технологиях с акцентом на системное администрирование Linux и Windows, веб-разработку и настройку различных систем. Мои глубокие знания и обширный практический опыт в этих сферах позволяют мне создавать детальные руководства и учебные материалы, ценные для пользователей всех уровней.

Я стремлюсь делать сложные темы доступными и понятными, надеюсь что мой вклад в сообщество IT будет оценен по достоинству.

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

Linux и Windows
Выскажите своё мнение или присоединяйтесь к обсуждению:

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