Ich habe ungefähr ein Dutzend Linux-Boxen, auf denen ich gelegentlich dieselben Befehle ausführen muss. Gibt es eine einfachere (oder automatisierte) Möglichkeit, dies zu tun, als sich bei jedem Computer anzumelden und den Befehl einzeln auszuführen? Es sind nicht immer die gleichen Befehle und es ist nicht zu einer voreingestellten Zeit, also ist es nicht ideal für Werkzeuge wie cron
.
linux
remote-access
Chris Bunch
quelle
quelle
Antworten:
Hm, vielleicht ist pconsole das Werkzeug, das Sie wollen.
quelle
Es gibt auch ClusterSSH , das genau das tut, was Sie denken. Yay für die beschreibende Benennung!
quelle
Sie sollten herausfinden, dass Puppet hier ein linux.com- Artikel über seine Einrichtung und Verwendung ist
quelle
Übersehen Sie auch nicht pssh und dsh . beide sind gsh sehr ähnlich, wie @Philip Durbin es erwähnt hat.
quelle
Sie können Capistrano versuchen . Ursprünglich war es ein Rails-Bereitstellungstool, aber es wurde erweitert, um viele Aufgaben mit Remote-Computern zu erledigen.
Um einen umfassenderen Zugang zur Verwaltung mehrerer Computer zu erhalten, sollten Sie Chef ausprobieren .
quelle
Ansible kann Ad-hoc-Befehle ausführen und ist auch für die vollständige Konfigurationsverwaltung erweiterbar. Die Fähigkeit, anhand von Gruppen zusammenzupassen, ist ausgezeichnet.
http://docs.ansible.com/intro_adhoc.html
quelle
ansible
funktioniert gut mit hunderten von maschinen gleichzeitig oder du kannst es auf n maschinen gleichzeitig beschränkenIch werde wohl meine Antwort aus Stack Overflow kopieren und einfügen , was den Leuten anscheinend gefallen hat. . .
Die Frage, wie man Befehle auf vielen Servern gleichzeitig ausführt, tauchte neulich auf einer Perl-Mailingliste auf, und ich gebe die gleiche Empfehlung, die ich dort gegeben habe , nämlich gsh: http://outflux.net/unix/. software / gsh
gsh ähnelt der "
for box in box1_name box2_name box3_name
" bereits gegebenen Lösung, aber ich finde gsh praktischer. Sie richten eine / etc / ghosts-Datei ein, die Ihre Server in Gruppen wie web, db, RHEL4, x86_64 oder was auch immer (man ghosts) enthält. Dann verwenden Sie diese Gruppe, wenn Sie gsh aufrufen.Sie können auch Geistergruppen kombinieren oder aufteilen, z. B. mit web + db oder web-RHEL4.
Ich erwähne auch, dass die Website von shmux, obwohl ich sie noch nie verwendet habe, eine Liste von Software (einschließlich gsh) enthält, mit der Sie Befehle auf vielen Servern gleichzeitig ausführen können. Capistrano wurde bereits erwähnt und könnte (soweit ich weiß) auch auf dieser Liste stehen.
quelle
Wenn Sie sich auf einem KDE-Desktop befinden, hat konsole die Option "Eingabe an alle Sitzungen senden". Dies gilt für alle Sitzungen, die im selben Konsolenfenster geöffnet sind.
quelle
Sie können auch versuchen,
ssh [user@]hostname [command]
die Hostnamen zu durchlaufen.quelle
Schauen Sie sich auch func an. Mit Func können Sie eine Modularchitektur verwenden, um verschiedene Aspekte eines Systems zu steuern, vom Umgang mit Paketen über das Ausführen von Befehlen usw. Es funktioniert auf einem Client / Server-Modul über SSL und verfügt auch über ein ziemlich flexibles Authentifizierungsschema.
quelle
Ich habe ClusterSSH verwendet und es funktioniert. Ab einer bestimmten Anzahl von Terminals lässt es sich jedoch nicht gut skalieren.
Ich bin überrascht, dass niemand Xargs erwähnt hat. Xargs ist perfekt für die meisten Dinge. Tatsächlich habe ich es mir so bequem gemacht, dass ich nie mehr Clustersh verwende.
Beispiel
(Starten Sie Apache auf allen Webhosts neu.)
quelle
-P30
bedeutet der Teil "30 von ihnen gleichzeitigWenn Sie bereits ein tmux-Benutzer sind, könnte Ihnen tmux-cssh (steht für
TMUX-C(luster)-SSH
) gefallen . Sie geben ihm eine Liste mit Servernamen und es öffnet sich ein neues tmux-Fenster mit einer SSH-Sitzung, die für jeden Server in einem eigenen Bereich geöffnet ist. Alle Tastenanschläge werden in jedes Fenster kopiert. Abhängig von der Anzahl der Hosts kann die Ausgabe schwer lesbar sein.quelle
Andere Werkzeuge sind:
RunDeck könnte auch als leichtgewichtiger ControlTier bezeichnet werden.
Mit diesen Tools erhalten Sie nicht nur eine Cluster-Shell, sondern auch ein Web-Frontend, und Sie können Ihre Jobs für die zukünftige Verwendung speichern.
quelle
Sie können auch Cluster-SSH (cssh) ausprobieren. Ich habe es nicht benutzt, aber es gibt einen Artikel auf LinuxJournal.com mit dem Titel "Mehrere Server effizient verwalten", der darüber spricht.
quelle
Verwenden Sie Teller , einfach und sehr kraftvoll! Dieses Drehbuch hat mein Leben verändert :) Ein Drehbuch, um sie alle zu beherrschen!
http://nic-nac-project.org/~drimiks/gnu/dish.shtml
Die Diligence-Shell 'dish' führt auf mehreren Systemen gleichzeitig Befehle über ssh / rsh / telnet / mysql aus. Das Ändern des Passworts, das Aktualisieren der Konfiguration, das Kopieren von Dateien, das Überprüfen des Status usw. auf Hunderten von Knoten ist dann ganz einfach. Dish ähnelt der 'dsh' (Distributed Shell) von IBM, ermöglicht aber auch die Remote-Ausführung von Befehlen, die eine Authentifizierung erfordern. Verglichen mit anderen Open-Source-Paketen, die eine verteilte Shell (oder ähnliche Tools) wie ClusterIt, Tänzershell, parallele verteilte Shell oder C3 enthalten, ist dish ein schlanker und einfach zu verwendender Remote-Shell-Wrapper für Fälle, in denen eine flexible Lösung erforderlich ist. Sie können die Handbuchseite des Gerichts hier online durchsuchen.
quelle
Hier einige Beispiele mit den Befehlen, die in anderen Antworten erwähnt wurden:
pdsh
Kann numerische Bereiche annehmen, Ausgaben mit dem Hostnamen zuerst, scheint tatsächlich erhalten zu sein :
einfachste Version:
pdsh -w hostname echo done
Ausgabe:
Komplizierteres Beispiel:
pdsh -w username@hostname[7-8],username@otherhost "sleep 5 && echo done"
Ausgabe:
Mac:
brew install pdsh
dsh
dsh -m user@host,user@host --remoteshell ssh --concurrent-shell -- "sleep 5 && echo done"
Benötigen Sie eine Remote-Shell-Einstellung, andernfalls wird "rsh" verwendet, das möglicherweise nicht verfügbar ist.
Mac:
brew install dsh
pssh
pssh -i -H user@host -H user@host "sleep 5 && echo done"
Sie können alle optional auch eine Liste von Maschinen aus einer Datei entnehmen.
Fühlen Sie sich frei, hier weitere Beispiele hinzuzufügen, es ist ein Community-Wiki
Mac:
brew install pssh
Cluster SSH
Cluster-SSH (bei der "Nur-Mac-Version" gibt es anscheinend zwei Versionen, die andere ist hier ) öffnet tatsächlich "echte Terminals" mit einem großen Terminal am unteren Rand, das Eingaben an alle anderen sendet. Es ist also wie eine Benutzeroberfläche, die es an mehrere sendet.
Ex:
csshX hostname0[1-2] hostname3
Geben Sie dann in das rote Feld ein und es wird zu jedem Terminalfenster, eines pro Host, das angezeigt wird, gewechselt.mac:
brew install csshx
(eine alte version funktioniert aber immer noch)es gibt auch ein
brew install ansible
FWIWquelle