Есть несколько инструментов, позволяющих делать то, что вы хотите. Мне больше всего нравится pdsh , который включает pdcp
(multi-host scp), pdsh
(multi-host ssh) и dshbak
(отображать вывод для нескольких хостов, сгруппированный по хостам) - dshbak
полезен, потому что pdsh выполняет команды параллельно на нескольких хостах, а не один за другим. Я много раз использовал pdsh на кластерах, виртуальных машинах, облачных серверах, а также на малых и больших группах физических машин. Он хорошо справляется со своей задачей и прост в настройке.
pdsh доступен предварительно упакованным для большинства дистрибутивов.
Чтобы использовать его, вы должны создать файл hosts (по умолчанию / etc / genders), содержащий имена хостов и разделенный запятыми список имен «групп», к которым они принадлежат. Каждый хост может принадлежать к одной или нескольким группам - например, некоторые хосты могут быть в группе «webserver», некоторые - в группе «dbserver», а все хосты - в группе «all». Например:
somemachineA all
somemachineB all
Затем вы должны использовать pdcp для копирования вашего скрипта на все хосты в группе «все»:
pdcp -g all commands.sh /tmp/
(Примечание: / tmp на удаленных хостах должен быть смонтирован с помощью exec privs - по умолчанию для большинства файловых систем, но это нет ничего необычного в том, что / tmp монтируется noexec в целях безопасности. в этом случае либо pdcp скрипт в другое место, либо его вызов, например, bash /tmp/commands.sh
, а не просто / tmp / commands.sh
?)
Затем выполните сценарий на всех хостах:
pdsh -g all /tmp/commands.sh >& /tmp/commands.log
(Примечание: это предполагает, что ssh был настроен на всех хостах для входа без пароля, то есть с использованием ключа ssh, а не пароль.если это не так, вероятно, лучше не перенаправлять вывод в файл журнала, потому что это затруднит интерактивное использование. Вам действительно следует настроить удаленные хосты для доступа к ключу ssh, а затем отключить вход по паролю)
по завершении вы можете просмотреть журнал с помощью dshbak:
dshbak /tmp/commands.log | less
Наконец, одна полезная вещь, которую нужно знать о pdsh и т. Д., Заключается в том, что по умолчанию , он попытается использовать rsh, а не ssh. Понятия не имею, почему, потому что никто в здравом уме больше не использует rsh ... это легко исправить, однако, просто создайте файл с именем / etc / pdsh / rcmd_default
и добавьте одну строку, содержащую только ssh
.
Поскольку вам нужен gpgme-config
, вам необходимо установить libgpgme-dev
, который является пакетом разработки для libgpgme
:
apt install libgpgme-dev
Вы также можете полностью пропустить использование pip
и установить вместо негоpython-gpg
(или python3-gpg
, если вы используете пакет Python 3 ):
apt install python-gpg