Pssh. Работа с несколькими серверами.

Сегодня решаем простую задачу — выполнение одной команды на нескольких серверах одновременно. В качестве примера попробуем узнать uptime нескольких машин. Воспользуемся для этого утилитой pssh. Для CentOS пакет с утилитой доступен в EPEL репозитории. Устанавливаем её командой (в зависимости от ОС):

yum install pssh
apt-get install pssh
dnf install pssh

Создаём файл со списком серверов, с которыми мы будем работать. Выглядеть он будет следующим образом (2222 — это SSH порт):

$ cat ./hosts.pssh 
uptime@bob.sysadmin.pm:2222
uptime@alice.sysadmin.pm:2222

Если на серверах настроен доступ по ключам, то для получения аптайма одной командой мы будем делать вот так:

$ pssh -i -h ./hosts.pssh uptime

Но если ключа у нас не настроено, а автоматизировать процесс хочется, то можно воспользоваться утилитой sshpass. Вместе с ней, pssh нужно запускать с ключом -A:

$ sshpass -p superpassword pssh -A -i -h ./hosts.pssh uptime
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
[1] 22:01:24 [SUCCESS] uptime@bob.sysadmin.pm:2222
 22:01:24 up 9 days, 20:57, 2 users, load average: 3,03, 3,27, 3,29
[2] 22:01:25 [SUCCESS] uptime@alice.sysadmin.pm:2222
 22:01:25 up 11 days, 15:35, 1 user, load average: 2,20, 2,21, 2,30

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

Разумеется, нельзя не отметить серьёзный минус такого подхода — у пользователей, которыми мы выполняем авторизацию на серверах, пароль должен быть одинаковым.

Ещё одна задача, которая с помощью pssh решается очень легко — это копирование одного файла сразу на несколько серверов, делается это командой:

$ pscp.pssh -h ./hosts.pssh ./test12345.txt /tmp/

Либо, при использовании sshpass:

$ sshpass -p superpassword pscp.pssh -A -h ./hosts.pssh ./test12345.txt /tmp/
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
[1] 21:41:34 [SUCCESS] uptime@bob.sysadmin.pm:2222
[2] 21:41:39 [SUCCESS] uptime@alice.sysadmin.pm:2222

pssh — это удобная утилита для решения простых, разовых задач. Однако если администратору необходимо регулярно централизованно работать с большим количеством серверов одновременно, имеет смысл сразу же перейти к использованию, например, Ansible.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *