Verwenden Sie Terminal.app, um eine SSH-Verbindung zu mehreren Hosts herzustellen

Gibt es eine App oder einen "Trick", um Terminal zu verwenden, um Befehle auf verschiedene SSH-Hosts (normalerweise Cluster) zu spiegeln?

Ich möchte keine andere Terminalanwendung verwenden.

BEARBEITEN: Entschuldigung, aber die Überarbeitung von Timothymh hat die Bedeutung meiner Frage tatsächlich anders gemacht. Was ich möchte, ist eine Anwendung, in der ich manuell gespiegelte Befehle an verschiedene Server ausgeben kann, während ich an ihnen arbeite, kein Skript oder System (wie Puppet), um nur bekannte Befehle auszugeben. Aus diesem Grund habe ich erwähnt, dass ich die, die ich ausprobiert habe (iTerm2 usw.), wegen des Look and Feel hasse.

Ich mag die Art und Weise, wie sich die Standard-Terminal-App in Bezug auf Schriftarten, Tastaturbelegung, Art des Hoch- und Runterscrollens und so weiter verhält und aussieht.

Ich verstehe deine Frage nicht
@CousinCocaine, weil die Bearbeitung die ursprüngliche Frage weggenommen hat ... wenn Sie iTerm2 verwenden, wissen Sie, dass Sie zu mehreren Hosts (unter anderem) ssh und auf ihnen denselben Befehl ausführen können. Wenn Sie jetzt auch die Apple terminal.app verwenden, bemerken Sie, wie das Look and Feel anders ist, die Tastatur anders zugeordnet ist, das Scrollrad anders reagiert. Ich mag iTerm2 nicht, ich möchte, dass terminal.app mehrere Hosts steuert. Oder welche Alternativen gibt es außer Terminator und csshx?
Was ist mit "Spiegelbefehlen" gemeint? Was ist ein "gespiegelter Befehl"?
Das heißt, während Sie tippen, geht die Eingabe an mehrere Terminals (also alle Server) und Sie müssen sie nicht auf jedem separat eingeben.

Antworten (2)

Sie können ein Shell-Skript schreiben und es wie folgt in ~/.bashrc einfügen:

function do_some_thing() {
  command="fab -R localhost deploy --set sha=master"
  ssh -t ubuntu@1.2.3.4 -C "$command"
  ssh -t ubuntu@1.2.3.5 -C "$command"
  ssh -t ubuntu@1.2.3.6 -C "$command"
  ssh -t ubuntu@1.2.3.7 -C "$command"
}

Es gibt jedoch verschiedene Tools, die Sie für diese Art von Aktivität verwenden können, wie Chef oder Capistrano oder verschiedene andere.

Dies ist ein offensichtlicher, aber sehr cooler Trick. commandSie könnten auch ein Shell-Skript erstellen, das etwas Ähnliches tut und als Eingabe verwendet ( $1).
Ich würde Ansible in die Liste der empfohlenen Tools aufnehmen (hat seine eigenen Vorteile, z. B. ohne Agenten und etwas weniger einschüchternd zu lernen).
Danke Leute, aber das ist nicht das, was ich brauche, bitte sehen Sie sich die Bearbeitung an (der Bearbeitung :-) )
Ich empfehle dringend so etwas wie die erwähnten Tools – ansible, chef, puppet, capistrano oder docker – um Ihre Sysadmin-Arbeit zu erledigen. Das manuelle Eingeben von Befehlen auf mehreren Hosts ist nicht die effiziente, moderne oder professionelle Art, Sysadmin auszuführen. Vielleicht haben Sie Ihre Gründe :) auch, falls Sie es verpasst haben, der obige 'Befehl' kann nur $1 sein, also würden Sie $ do_some_thing rm /var/log/system.logsystem.log auf allen Hosts entfernen.
@court3nay Ich verwende bereits Puppet, um Dinge zu verwalten, aber es gibt viele Gründe, ssh und manuelle Dinge zu erledigen :-)

Sie können pdsh verwenden, auch wenn Sie Chef haben, es wird schneller sein. Mit Chef ist die Messersuche (in knife-ssh enthalten) eine teure Operation, aber Sie können die Ergebnisse der Suche ausgeben knife search node role:base -i > base.nodesund dann pdsh (geschrieben in C) verwenden, um auf dem Set zu arbeiten (offensichtlich können Sie diesen Teil ohne Chef ausführen ). pdsh -w^base.nodes "sudo whoami"oder Wasauchimmer. pdshwird mit einem begleitenden Tool geliefert dshbak, das die Ausgabe der Hosts auch für Sie in einem praktischen Bericht zusammenfassen kann.

Stellen Sie nur sicher, dass Sie mit Tools wie diesem keine einmalige Verwaltung in großem Umfang durchführen. Es ist großartig zum Auditieren und Starten von Jobs, aber es ist kein Ersatz für die Konfigurationsverwaltung.

Danke Jake, aber ich muss SSH in die Hosts einbinden, nicht um einfach Befehle spontan auszuführen. Ich brauche die Schale.
dann gibt es Cluster-ssh brew install csshxfür Terminal.app oder gem install i2csshfür iterm2