Befehl auf mehreren Servern zugleich ausführen

oliver-siewert

New Member
Hallo,


ich habe hier ein kleines Updatescript.
Damit update ich immer unsere Server...
Das sind viele.
Alle sind mit dem SSH Dienst ausgestattet.
Meine frage ist nun, gibts irgendwie ein Programm, mit dem man per SSH
von einem Server sich irgendwie auf allen gleichzeitig einloggen kann, und dass das Script ausgeführt wird.
Von mir aus aus einer Liste mit IP und PW, das Script liegt auf jedem Server im exakt gleichen Verz.

hat jemand eine Idee?


Danke im Vorraus
 
ja, ne... ich möchte das halt nur ab und zu mal ausführen, aber hab kein bock bei mehreren Servern (es sind viele) einloggen und und und... kann man das verstehen?
 
Code:
#!/bin/sh

servers="server1.domain.bla server2.anderedomain.tld server3.undsoweiter.de"

for server in $servers; do
  ssh $server /path/to/script
done

Das führt das Script nacheinander auf allen Kisten aus.
 
Last edited by a moderator:
Ein Server, da läuft das Webinterface drauf.
Wenn man dann einen Befehl an z.b. Server3 schickt. verbindet sich der Server wo das Wi. läuft. per SSH (Keys) darauf, und führt die Befehle aus.
Ich kenn mich leider mit den Keys nicht aus.. ich wusste nicht dass das funktioniert...
 
Aber wenn sich die einzelnen Server doch eh mit einem SSH-Kay verbinden, sollte es doch kein Problem sein, sich ebenfalls mit einem SSH-Key zu verbinden.
 
@oliver-siewert: In deinem OP sehe ich nichts von Webinterface.
Erzähl doch bitte nochmal etwas genauer, was du eigentlich willst.
 
Meine frage ist nun, gibts irgendwie ein Programm, mit dem man per SSH
von einem Server sich irgendwie auf allen gleichzeitig einloggen kann, und dass das Script ausgeführt wird.

Gibt es einen speziellen Grund für die Gleichzeitigkeit (Cluster oder so)?

Ansonsten würde ich es einfach nacheinander in einer Schleife machen, etwa so

Code:
for SERVER in server1.de server2.de server3.de ; do
  ssh $SERVER -i keys/$SERVER.key -T /usr/share/bin/update.sh server1 > logs/$SERVER.log 2>&1
done
 
Ich fass das nochmal kurz zusammen:

- Eine mögliche Lösung für die Shell wurde bereits genannt.
- Empfohlenes Login bei der Shell-Lösung ist SSH-Key-Auth

- oliver-siewert möchte das Ganze offenbar lieber per Webinterface starten

Zu letzterem meine Meinung: Mach es nicht.
Ich lese aus deinem Posting heraus, dass du das gerne mit root-Logins machen willst. Und dass du die Login-Daten dafür in einer Datei ablegen würdest.
Das ist gleich in mehrerer Hinsicht riskant (der erste Punkt ist dabei ein KO-Kriterium):
- Wird der Server auf dem diese Passwort-Datei liegt kompromittiert, sind damit implizit _alle_ Server kompromittiert.
- Auf allen Servern ist root-Login per SSH (mit Passwort) möglich. Dies wird nicht empfohlen.

Passwörter sollten _niemals_ irgendwo unverschlüsselt gespeichert sein. Eine Entschlüsselung sollte dabei nicht ohne menschliches Zutun (Eingabe eines Passphrase) möglich sein.
Eine Verwendung von sowas in automatisierten Abläufen (Scripts/Applikationen) - ganz besonders auf entfernten Systemen - bedarf hoher Sensibilität bezüglich der Sicherheit der Implementierung.

Man könnte vermutlich eine Lösung entwickeln, die eine ausreichende Sicherheit liefert um als infragekommend zu gelten. (Dies würde allerdings weit mehr als ein Script auf dem Webserver benötigen.)
Da du jedoch in diesem Thread bereits eine Lösung mit Passwort-Datei für gangbar befunden hast glaube ich nicht, dass du eine solche Lösung hinreichend bezüglich der implementierten Sicherheit bewerten könntest.

PS: Wie startest du eigentlich aktuell den Update-Vorgang auf den einzelnen Servern?
 
Last edited by a moderator:
Hallo,


Alle sind mit dem SSH Dienst ausgestattet.
Meine frage ist nun, gibts irgendwie ein Programm, mit dem man per SSH
von einem Server sich irgendwie auf allen gleichzeitig einloggen kann, und dass das Script ausgeführt wird.

cssh
pdsh

die Tools Deiner Wahl.
 
Back
Top