Aufrufen von parallelem SSH (PSSH) im Bash-Skript

Aufrufen von parallelem SSH (PSSH) im Bash-Skript

Ich kann Befehle parallel auf einer Liste von Maschinen ausführen, indem ich psshcommand verwende. Um beispielsweise einen Ordner fooauf mehreren Maschinen zu erstellen, die in aufgelistet sind, hosts.txtkann ich Folgendes ausführen:

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

Da der Befehl jedoch weitere Argumente erfordert (z. B. die Verwendung eines öffentlichen Schlüssels zur Authentifizierung usw.), habe ich versucht, das folgende Bash-Skript zu erstellen bar.sh, sodass der Befehl, den ich ausführen möchte, einfach als Argument für das Skript angegeben wird:

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

Beim Ausführen bar.sh mkdir foofriert das Terminal jedoch ein, selbst ich kann es nicht mit Strg+C beenden.

Irgendwelche Ideen?

Antwort1

Ich bin nicht so vertraut mit pssh. Erhalten Sie den gleichen Fehler, wenn Sie GNU Parallel verwenden:

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

Tragen Sie den Benutzernamen in hosts.txt ein:

myuser@host1
myuser@host2

Antwort2

Es ist erforderlich, -i zu verwenden (Inline-aggregierte Ausgabe und Fehler für jeden Server), Folgendes funktioniert:

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

verwandte Informationen