Parallele Ausführung eines SH-Skripts auf mehreren Servern

Parallele Ausführung eines SH-Skripts auf mehreren Servern

Ich versuche, in meiner Schleife Aktionen auf mehreren Servern auszuführen, möchte meine Aktionen jedoch auf dem ersten Server starten und direkt zum zweiten Server gehen, ohne auf die Fertigstellung des ersten Servers zu warten.

HOSTS="host1 host2"
    For hostname in ${HOST} ;
do ssh -tt ${USERNAME}@${hostname} << EOF
actions
exit
EOF
Done 

Hat jemand eine Idee, wie man das in Linux sh bash macht?

Vielen Dank im Voraus.

Antwort1

pdshscheint Ihren Anforderungen zu entsprechen. Führt SSH-Verbindungen parallel und in mehreren Threads aus.

Beispiel:

$ pdsh -w 192.168.1.4,192.168.1.250 uname -r
192.168.1.4: 2.6.32-431.17.1.el6.x86_64
192.168.1.250: 2.6.32-431.11.2.el6.x86_64
$

Parallele Shell mit pdsh

Wie kann ich eine einzelne Datei gleichzeitig an mehrere Remote-Standorte senden?

Antwort2

Verwenden Sie GNU Parallel:

parallel -S host1,host2 --nonall uname -a

Wenn die Aufgabe komplexer ist, erstellen Sie eine Funktion:

do_actions() {
   action
   packed
   function
}
export -f do_actions
HOSTS="host1,host2"
parallel -S $HOSTS --ssh 'ssh -l '$USERNAME --nonall --env do_actions do_actions

Wenn der Benutzername derselbe ist wie, whoamidann reicht folgendes:

parallel -S $HOSTS --nonall --env do_actions do_actions

GNU Parallel muss nicht global installiert werden: Wenn es nicht installiert ist, können Sie eine persönliche Installation durchführen.

wget pi.dk/3
bash 3

verwandte Informationen