Вызов параллельного ssh (pssh) в скрипте bash

Вызов параллельного ssh (pssh) в скрипте bash

Я могу запускать команды параллельно на списке машин, используя psshкоманду. Например, чтобы создать папку fooна нескольких машинах, перечисленных в hosts.txtя могу запустить:

pssh -h hosts.txt -l MyUserName "mkdir foo"

Но поскольку команда требует больше аргументов (например, использование открытого ключа для аутентификации и т. д.), я попытался создать следующий скрипт bash bar.sh, в котором команда, которую я хочу выполнить, просто указывается в качестве аргумента скрипта:

#!/bin/bash
pssh -h hosts.txt -l MyUserName "$@"

Но запуск bar.sh mkdir fooзависает терминал, даже я не могу его убить с помощью Ctrl+C.

Есть идеи?

решение1

Я не слишком хорошо знаком с pssh. Вы получаете ту же ошибку, если используете GNU Parallel:

#!/bin/bash
parallel -j10 --slf hosts.txt --nonall "$@"

Введите имя пользователя в hosts.txt:

myuser@host1
myuser@host2

решение2

Необходимо использовать -i (встроенный агрегированный вывод и ошибки для каждого сервера), следующее будет работать:

pssh -h pssh.txt -l root -i uptime

Связанный контент