- Ein CLI-Tool, mit dem sich Befehle über parallele SSH-Sitzungen gleichzeitig auf mehreren Servern ausführen lassen
- Unterstützt einfache Nutzung ebenso wie erweiterte Ein-/Ausgabesteuerung und ist nützlich für die Verwaltung von Serverclustern
Grundfunktionen
- Führt Befehle auf mehreren Hosts aus und gibt die Ausgabe mit dem Hostnamen als Präfix aus
- Beispiel:
pussh -h host1,host2 uname -a
- Hostlisten können aus einer Datei oder von der Standardeingabe bereitgestellt werden
- Beispiel:
pussh -f servers uname -a oder fetch-servers | pussh -f - uname -a
- Die Ausgabe kann an eine Pipeline übergeben werden, um sie zu sortieren oder zu filtern
- Beispiel: Nach Festplattennutzung sortieren →
pussh -f servers df -h / | grep /dev | sort -rn -k5
- Die Ausgabe jedes Hosts kann in einer separaten Datei gespeichert werden (
%h steht für den Hostnamen)
- Beispiel:
pussh -f servers -o %h-hw.txt lshw
- Die SSH-Ausgabe kann zur Weiterverarbeitung an andere Befehle gepiped werden
- Beispiel:
pussh -f servers -o '|grep feature' command > output
Eingabesteuerung
- Bei der Befehlsausführung kann Eingabe aus einer Datei oder aus der Ausgabe eines Befehls bereitgestellt werden
- Beispiel:
pussh -f servers -i file command
- Beispiel: Hostspezifische Eingabedatei →
pussh -f servers -i %h.data command
- Beispiel: Dynamische Eingabe →
pussh -f servers -i 'get-data %h|' command
-i und -o lassen sich beliebig kombinieren
Bereitstellung und Ausführung
- Befehle oder Skripte können remote übertragen und ausgeführt werden
- Beispiel:
pussh -f servers -u my-deploy.sh args ...
- Dabei muss die ausführbare Datei self-contained sein oder mit der Umgebung des Zielservers kompatibel sein
Tipps zur Performance-Optimierung
- Die Geschwindigkeit beim Aufbau von SSH-Verbindungen hat großen Einfluss auf die gesamte Ausführungszeit
- Wenn die Verarbeitungsgrenze des SSH-Agenten überschritten wird, kann es zu Authentifizierungsfehlern oder Verbindungsproblemen kommen
- Empfehlung: Mit gesetzter Ausführungsrate verwenden (z. B.
alias pussh='pussh -r 50')
- Da Netzwerklatenz großen Einfluss hat, ist es schneller, sich per ssh auf einen entfernten LAN-Rechner einzuloggen und pussh dort auszuführen
Entwicklung und Geschichte
- Ein Tool, das seit 2008 intern bei Bearstech verwendet wird
- Ursprünglich nur ein paar Zeilen Shell-Skript, heute läuft es auch in Clustern mit mehr als 500 Servern stabil
- Ist mit einem Cloud-Management-System integriert und erzeugt aus einfachen Hostbeschreibungen ausführbare Hostlisten
Einschränkungen
- stdout und stderr des Remote-Servers werden nicht getrennt, sondern in einem einzigen Stream zusammengeführt ausgegeben
- Der Exit-Status (
exit status) des auf dem Remote-Server ausgeführten Befehls kann nicht abgerufen werden
2 Kommentare
Der Name ist verdächtig!
Ich könnte nicht mehr zustimmen 🤣