Zum Hauptinhalt springen

Einen Befehl auf mehreren SSH-Servern ausführen

Von Lucas Russo, Entwickler von SSHive · Aktualisiert am

Eine Shell-Schleife, tmux, Ansible oder die Broadcast-Leiste von SSHive: was jedes davon gut kann, mit den genauen Befehlen, damit Sie für die Aufgabe das richtige wählen.

Geschätzte Dauer: 4 Minuten

Freien Plattenplatz auf sechs Servern prüfen, denselben Dienst überall neu starten, herausfinden, welche OpenSSL-Version wo läuft: Solche Aufgaben kommen jede Woche, und vom Mac aus gibt es vier vernünftige Wege dafür. Drei brauchen nur Werkzeuge, die Sie vielleicht schon haben. Der vierte, die Broadcast-Leiste von SSHive, tippt in die Sitzungen, die Sie ohnehin offen haben. Jeder Schritt unten ist eine Methode, mit dem Befehl zum Kopieren und dem Punkt, an dem sie nicht mehr das richtige Werkzeug ist. Alle setzen eine Anmeldung per Schlüssel voraus, nicht per Passwort: Die Anleitung zu SSH-Schlüsseln richtet das ein.

Schritt für Schritt

  1. Eine Shell-Schleife: skriptbar, ein Server nach dem anderen

    Im Terminal: for h in web1 web2 web3; do echo "== $h"; ssh -o BatchMode=yes "$h" 'df -h /'; done. Die Namen dürfen Host-Aliasse aus ~/.ssh/config sein. BatchMode=yes lässt ssh scheitern, statt an einer Passwortabfrage stehen zu bleiben, deshalb kommen die Schlüssel zuerst. Die Ausgabe kommt der Reihe nach, ein Host nach dem anderen, leicht in eine Datei zu schreiben oder mit der von letzter Woche zu vergleichen. Das passt für alles Nicht-Interaktive; auf eine Rückfrage antworten oder einen Editor bedienen kann die Schleife nicht, und bei vielen Hosts ist sie langsam, weil jeder auf den vorigen wartet.
  2. tmux: eine Tastatur, mehrere laufende Shells

    Installieren Sie tmux (brew install tmux), öffnen Sie ein Fenster und teilen Sie es mit Ctrl-b % (nebeneinander) oder Ctrl-b " (übereinander) in einen Bereich pro Server, dann in jedem per ssh auf einen Server. Drücken Sie Ctrl-b : und tippen Sie setw synchronize-panes on: Alles, was Sie jetzt tippen, geht an jeden Bereich dieses Fensters, auch Antworten auf Rückfragen und Tasten in Vollbildprogrammen, und Sie sehen alle nebeneinander. setw synchronize-panes off gibt jedem Bereich seine eigene Tastatur zurück. Auf den Servern ist nichts zu installieren; das ist das Werkzeug für interaktive Arbeit auf einer Handvoll Rechnern.
  3. Ansible ad hoc: parallel, mit einem Bericht pro Host

    ansible all -i 'web1,web2,web3,' -a 'df -h /' führt den Befehl auf den drei Hosts aus, standardmäßig fünf gleichzeitig (-f ändert das), und gibt jedes Ergebnis unter dem Hostnamen mit seinem Status aus. Das Komma am Ende sagt Ansible, dass die Liste ein Inventar ist und kein Dateiname. Es braucht Ansible auf dem Mac und Python auf den Servern und ist das richtige Werkzeug, sobald aus einer Einmalaktion etwas wird, das Sie jede Woche ausführen: Dann gehört sie in ein Playbook.
  4. Die Broadcast-Leiste von SSHive: die Sitzungen, die ohnehin offen sind (Pro)

    Verbinden Sie sich mit jedem Server; jeder wird ein SSH-Tab. Klicken Sie in der Symbolleiste des Terminals auf die Broadcast-Schaltfläche: Über dem Terminal öffnet sich eine orange Leiste BROADCAST mit einem Zähler, Sitzungen (N). Tippen Sie den Befehl in das eigene Feld der Leiste und drücken Sie die Eingabetaste oder klicken Sie auf Senden. SSHive tippt ihn in jede verbundene SSH-Sitzung, gefolgt von einem Zeilenumbruch, eine Meldung bestätigt, wie viele Sitzungen ihn erhalten haben, und die Ausgabe jedes Servers bleibt in seinem eigenen Tab. Eine Auswahl pro Sitzung oder gespeicherte Gruppen gibt es nicht: Um einen Server auszulassen, trennen Sie ihn vorher. Escape im Feld oder das × schließt die Leiste. Broadcast ist Pro und gibt es nur in der Mac-App; in der kostenlosen Version trägt die Schaltfläche ein PRO-Badge.

Häufige Fragen

Welche der vier Methoden soll ich nehmen?+
Die Schleife für Skripte und alles, was in eine Logdatei soll. tmux, wenn die Server Antworten auf Rückfragen brauchen oder Sie gemeinsam ein Vollbildwerkzeug bedienen. Ansible, wenn dieselbe Änderung wiederholbar, parallel und mit Bericht laufen muss. Die Broadcast-Leiste von SSHive für einen schnellen Blick über die Sitzungen, die in SSHive schon offen sind, wenn Sie jede Antwort in ihrem eigenen Tab statt in einem einzigen durchlaufenden Strom sehen wollen.
Kann ich nur an einen Teil der Sitzungen senden?+
Nein. Die Broadcast-Leiste hat keinen Filter pro Sitzung: Der Befehl geht auf einmal an jede verbundene SSH-Sitzung, und der Zähler in der Leiste sagt Ihnen, wie viele das sind. Wollen Sie einen Host auslassen, trennen Sie seine Sitzung, bevor Sie senden. Für eine feste Auswahl lassen Sie die Shell-Schleife oder Ansible von oben die Hosts benennen.
Gibt es Broadcast in der App für iPhone und iPad?+
Nein. Broadcast gehört zu den Funktionen, die es nur in der Mac-App gibt.

Passende SSHive-Funktionen

Broadcast-Modus

Befehle auf vielen Servern zugleich

SSH-Terminal

GPU-beschleunigtes Terminal

Schnellbefehle

Bibliothek wiederverwendbarer Befehle

SSHive kostenlos für macOS testen

Holen Sie sich den All-in-one-Client für SSH, SFTP, RDP und VNC auf dem Mac. Kostenloser Download, ohne Registrierung.

SSHive kostenlos laden