bash script und ssh mehrere Server in einer Schleife und Ausgabe-Befehle
Ich habe eine text Datei in der ich eine Liste von Servern. Ich versuche zu Lesen, der server aus der Datei SSH
im server und führen Sie ls
zu sehen, der directory-Inhalt. Meine Schleife läuft nur einmal wenn ich das SSH
Befehl, jedoch für SCP
läuft es für alle Server in der text-Datei und wird beendet, ich will, dass die Schleife ausgeführt, bis das Ende der text-Datei für SSH. Folgendes ist mein bash-Skript, wie kann ich es für alle Server in der text Datei dabei SSH
?
#!/bin/bash
while read line
do
name=$line
ssh abc_def@$line "hostname; ls;"
# scp /home/zahaib/nodes/fpl_* abc_def@$line:/home/abc_def/
done < $1
Ich das Skript als $ ./script.sh hostnames.txt
werfen Sie einen Blick auf code.google.com/p/parallel-ssh
Ich bin mir bewusst, dass der parallel-ssh. Ich Frage mich, ob dies durchgeführt werden, indem einfach SSH!
Ich bin mir bewusst, dass der parallel-ssh. Ich Frage mich, ob dies durchgeführt werden, indem einfach SSH!
InformationsquelleAutor Zahaib Akhtar | 2013-11-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem bei diesem code ist, dass
ssh
liest die Daten von stdin, die Sie bestimmt fürread line
. Man kann sagenssh
Lesen stattdessen etwas anderes, wie/dev/null
zu vermeiden, Essen alle anderen Hostnamen.ssh
liest von stdin und sendet Sie an den remote-server, damit Sie interagieren mit remote-Programme. Er weiß nicht, dasshostname; ls;
wird einfach ignoriert, dass Daten.InformationsquelleAutor that other guy
Etwas direkter ist die Verwendung der-n Option, die ssh nicht zu Lesen von der Standardeingabe.
InformationsquelleAutor Jack
Ändern Sie Ihre Schleife auf eine for-Schleife:
Es ist nicht parallel ssh, aber es funktioniert.
InformationsquelleAutor R.Sicart
Ich open-Source ein Kommandozeilen-tool namens Bedecktem, um diese Art der Sache zu erleichtern.
Zuerst importieren Sie Ihre Server:
Sobald das erledigt ist können Sie Befehle ausführen, über Sie mithilfe von Platzhaltern, etwa so:
InformationsquelleAutor Andrew Childs