
Ich muss in der Lage sein, lokal ein Skript auszuführen, das eine Verbindung zu verschiedenen Servern herstellt und auf ihnen Befehle ausführt. Wie kann ich das am besten erreichen?
Antwort1
Persönlich würde ich verwendenCapistrano. Es ist benutzerfreundlich und in Ruby geschrieben und die ganze schwere Arbeit wurde bereits für Sie erledigt.
Aus Wikipedia:
Capistrano ist ein Dienstprogramm und Framework zum parallelen Ausführen von Befehlen auf mehreren Remotecomputern über SSH.
Antwort2
Sie können einen Befehl mit ausführen ssh hostname command
. Wenn Sie ein ganzes Skript ausführen müssen, übertragen Sie es zunächst mit scp auf den Remote-Host und führen Sie es dann mit ssh aus.
scp script.sh host:script.sh
ssh host ./script.sh
Antwort3
Wie wäre es mit der Verwendung eines Konfigurationsmanagements wieMarionetteoderKoch? Das ist vielleicht ein bisschen übertrieben für nur ein Skript, aber wenn Sie mehrere solcher Skripte brauchen, ist es vielleicht eine Überlegung wert.
Antwort4
Am einfachsten wäre wahrscheinlich eine schnelle Bash-For-Schleife, etwa so:
for h in host1 host2 host3
do
echo $h
ssh user@$h "ps -ef"
done
Natürlich sind cfengine/puppet/chef/capistrano bessere Optionen für die Konfigurationsverwaltung. Wenn Sie interaktiv Befehle an die verschiedenen Shells senden möchten, ist clusterm (http://sourceforge.net/projects/clusterm/) ebenfalls eine gute Wahl.