SSH Befehle auf mehrere Server verteilen

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
schoeppchen
Beiträge: 184
Registriert: 08.12.2005 11:07:15
Kontaktdaten:

SSH Befehle auf mehrere Server verteilen

Beitrag von schoeppchen » 11.06.2006 09:45:52

Hallo,

ich suche eine Möglichkeit SSH Befehle auf Kommandozeile (Debian Sarge) bequem an mehere Hosts verteilen zu können.

Praktisch gesprochen habe ich nächtlich cron-apt auf ca. 30 Linuxservern laufen, gibt es neue Pakete (und das ist oft ;)), dann bekomme ich von jedem System eine E-Mail, dass neue Pakete da sind und aufs einspielen warten. Nun muss ich derzeit also im schlimmsten Falle auf alle 30 Server per SSH drauf gehen und apt-get upgrade durchführen - was eine furchtbare Arbeit ist. Trotzdem möchte ich nicht, dass cron-apt die Pakete automatisch einspielt, da dies nur Probleme bringt.

Schön wäre nun also ein Tool, welchem ich meine Server einstelle und dann auf allen System das Kommando parallel (oder auch hintereinander, aber halt in einer Shell) ausführen kann. Ich erhalte den Output der einzelnen Systeme dann nacheinander und kann interaktiv steuern - alles aus einer Shell heraus und ohne erst in 30 Terminalfenstern auf die Server connecten zu müssen. Das Ganze setzt natürlich PublicKey-Auth mit SSH Agent lokal voraus - dies ist aber kein Problem.

Kennt jemand eine solches Tool?

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 11.06.2006 10:03:40

Es gibt so ein Ding - war mal irgendwo ein Bericht darüber den ich gelesen habe. Eventuell wars clusterssh?

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

schoeppchen
Beiträge: 184
Registriert: 08.12.2005 11:07:15
Kontaktdaten:

Beitrag von schoeppchen » 11.06.2006 10:08:33

Klingt gut, danke für den Tipp. So wie ich diese Software aber verstehe werden *alle* Befehle repliziert auf die verschiedenen Server, was in meinem Falle aber nicht gewünscht ist da sich die Systeme ja schon unterscheiden bei den Paketen. Oder habe ich das falsch verstanden und ich kann nach dem Abschicken des 'apt-get upgrade' dann jeden Server einzeln nacheinander im xterm Window verwursten und interaktiv steuern?

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 11.06.2006 11:48:08

schoeppchen hat geschrieben:So wie ich diese Software aber verstehe werden *alle* Befehle repliziert auf die verschiedenen Server, was in meinem Falle aber nicht gewünscht ist da sich die Systeme ja schon unterscheiden bei den Paketen.
Du kannst (wie in den FAQ zu lesen) temporär Terminalfenster disablen. Du willst ja auf _allen_ deinen remote nodes (30 an der Zahl) ein und das selbe Kommando

Code: Alles auswählen

apt-get upgrade
ausführen und die Statusmeldungen eines jeden einzelnen Systems sehen.

Genau dafür ist cssh geeignet - zumindest die Info auf der Hompage sagt das.
http://clusterssh.sourceforge.net/index.php/FAQ

FAZIT
Mein Eindruck ohne das Tool zu kennen - nur Hompage gelesen - ist, dass es sehrwohl das ist was du haben willst.

Markus

schoeppchen
Beiträge: 184
Registriert: 08.12.2005 11:07:15
Kontaktdaten:

Beitrag von schoeppchen » 11.06.2006 13:36:43

Ok, ich schaue es mir mal an. Danke für die Erläuterungen!

Benutzeravatar
legolaus
Beiträge: 67
Registriert: 07.06.2006 10:14:35
Wohnort: Wetterau / Hessen

Beitrag von legolaus » 16.06.2006 10:13:49

Kennste du das KDE-Programm konsole?

Dieses bietet unter Ansicht->Eingabedaten an Alle Sitzungen senden die Möglichkeit deine Keyboardangaben an alle offenen Tabs zu senden. Wenn du jetzt noch mal konsole --help oder man konsole machst, kannst du auch sehen wie du dir da ein Scriptchen bauen kannst, was dir erstmal ne Verbindung zu allen Rechnerchen aufmacht usw.

Der Vorteil ist für mich der, dass du jederzeit jedes einzelne Terminal wieder einzeln bearbeiten kannst und das ganze graphisch geht.

Nachteil dürfte sein, dass es bei 30 Rechner recht schnell unübersichtlich wird mit den Tabs

Solltest du das ganze gelöst haben oder ein vernünftiges Programm gefunden haben was das kann, sag mir bitte bescheid!

schoeppchen
Beiträge: 184
Registriert: 08.12.2005 11:07:15
Kontaktdaten:

Beitrag von schoeppchen » 16.06.2006 10:31:03

Hi,

leider nutze ich grundsätzlich kein grafisches Frontend, da ich im Serverbereich arbeite. Andererseits sehe ich auch kein Problem darin, mir mal ein solches mit KDE aufzusetzen (es reicht ja vermutlich auch ein einfaches KNOPPIX unter einer Virtual Machine wie z.B. Microsoft Virtual PC laufen zu haben auf dem eigenen Arbeitsplatz), um diese Lösung auszuprobieren.

clusterssh funktioniert bei mir nämlich irgendwie nicht (bekomme einen ganz seltsamen Fehler, falls es jemanden interessiert kann ich den ja auch mal hier posten), deswegen wäre ich an einer anderen guten Lösung durchaus interessiert.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Beitrag von ThorstenS » 16.06.2006 14:23:45

ich nutze dafür dsh
Dort kann man mehrere Gruppen einrichten und schön remote verschiedene Wartungsarbeiten oder Scripte laufen lassen.

Benutzeravatar
hupfdule
Beiträge: 1864
Registriert: 09.12.2002 15:04:37
Wohnort: Berlin
Kontaktdaten:

Beitrag von hupfdule » 17.06.2006 13:26:39

Habe clusterssh probiert und bin quasi begeistert. Funktioniert genau so, wie ich mir das vorstelle. Was für ein Fehler kommt denn bei dir?

schoeppchen
Beiträge: 184
Registriert: 08.12.2005 11:07:15
Kontaktdaten:

Beitrag von schoeppchen » 19.06.2006 17:51:22

ThorstenS hat geschrieben:ich nutze dafür dsh
Dort kann man mehrere Gruppen einrichten und schön remote verschiedene Wartungsarbeiten oder Scripte laufen lassen.
Wir bringe ich das Tool dazu, mir eine interaktive Shell zu bieten, so dass ich auf Rückfragen der abgesendeten Kommandos reagieren kann?

Beispiel:
$ dsh -m root@192.168.0.100 -w -- apt-get install dsh
Reading Package Lists...
Building Dependency Tree...
The following extra packages will be installed:
libdshconfig1
Suggested packages:
update-cluster
The following NEW packages will be installed:
dsh libdshconfig1
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 45.7kB of archives.
After unpacking 250kB of additional disk space will be used.
Do you want to continue? [Y/n] Abort.
Das Abort kommt unmittelbar nach Aufforderung, ich habe keine Chance hier zu reagieren.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Beitrag von ThorstenS » 19.06.2006 20:00:39

sorry, hätte ich dazu sagen sollen:Die dsh bietet IMHO keinen interaktiven Modus.

D.h. Eingaben sind in angebrachter Weise zu übermitteln. Du wirst hier also sowas laufen lassen wollen:
dsh -m root@192.168.0.100 -w -- aptitude install --assume-yes dsh

schoeppchen
Beiträge: 184
Registriert: 08.12.2005 11:07:15
Kontaktdaten:

Beitrag von schoeppchen » 19.06.2006 20:28:51

Schade, aber dann müsste ich erst aufwändig 2 Befehle absetzen, denn ich möchte vorher kontrollieren, was REMOVED, UPGEGRADED und INSTALLIERT wird. Also ert ein
dsh -m root@192.168.0.100 -w -- apt-get install dsh
und danach ein
dsh -m root@192.168.0.100 -w -- apt-get install dsh -y
Ich glaube ich versuche dann doch lieber clusterssh zum Laufen zu bekommen, wobei der Fehler mich doch etwas abschreckt.

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Beitrag von ThorstenS » 19.06.2006 20:39:29

apt-get kennt auch die Option --simulate - es ist ja nie verkehrt zu schauen was man da absetzt - GERADE bei vielen Rechnern ;)

BTW: Warum benutzt du noch apt-get - sind das noch woody Rechner? Ich benutze aptitude wie apt-get auf der Kommandozeile und sehe dort einige Vorteile beim Deinstallieren. aber ich denke das ist ein anderer Thread.

Viel Erfolg bei clusterssh :)

Benutzeravatar
monotek
Beiträge: 227
Registriert: 20.07.2004 15:25:11
Wohnort: dresden

Beitrag von monotek » 20.06.2006 01:08:40


algol
Beiträge: 25
Registriert: 24.03.2006 08:18:16

Beitrag von algol » 20.06.2006 08:03:56

Warum nutzt Du nicht ssh direkt? Den hier angegebenen Tools mußt Du ja auch irgendwie beibringen, welche Server sie beackern sollen, oder nicht?

Mit einem kleinen shellskript ist das auch mit ssh direkt möglich.

Code: Alles auswählen

#!/bin/sh
# in $1 steht das zu installierende Paket...
SERVER="liste meiner servernamen oder IP Adressen"
for s in $SERVER
do
    ssh root@$s "apt-get install $1"
done
Hier kannst Du auch die von apt-get evtl. erwartete Y/n Antwort gleich eingeben.

schoeppchen
Beiträge: 184
Registriert: 08.12.2005 11:07:15
Kontaktdaten:

Beitrag von schoeppchen » 20.06.2006 14:03:17

ThorstenS hat geschrieben:apt-get kennt auch die Option --simulate - es ist ja nie verkehrt zu schauen was man da absetzt - GERADE bei vielen Rechnern ;)

BTW: Warum benutzt du noch apt-get - sind das noch woody Rechner? Ich benutze aptitude wie apt-get auf der Kommandozeile und sehe dort einige Vorteile beim Deinstallieren. aber ich denke das ist ein anderer Thread.
Ich benutze apt-get noch aus Gewohnheitsgründen, kenne aptitude nur über die Oberfläche und das hat mich abgeschreckt. Wo genau liegen die Vorteile?
ThorstenS hat geschrieben:Viel Erfolg bei clusterssh :)
Hmmm, danke :D

schoeppchen
Beiträge: 184
Registriert: 08.12.2005 11:07:15
Kontaktdaten:

Beitrag von schoeppchen » 20.06.2006 14:05:13

dsh ist nicht interaktiv, bei den anderen beiden Alternativen sehe ich hier keine Aussage dazu.

schoeppchen
Beiträge: 184
Registriert: 08.12.2005 11:07:15
Kontaktdaten:

Beitrag von schoeppchen » 20.06.2006 21:24:18

ThorstenS hat geschrieben:BTW: Warum benutzt du noch apt-get - sind das noch woody Rechner? Ich benutze aptitude wie apt-get auf der Kommandozeile und sehe dort einige Vorteile beim Deinstallieren. aber ich denke das ist ein anderer Thread.
Hmmm, also ich glaube ich habe eben eine Abneigung gegen aptitude entwickelt. Wollte deinem Rat mal folgen und ein einfaches aptitude upgrade durchführen, folgende Ausgabe:
# aptitude upgrade
Reading Package Lists... Done
Building Dependency Tree
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
The following packages are unused and will be REMOVED:
cvs db4.2-util libhtml-parser-perl libhtml-tagset-perl spamassassin spamc
webmin-postfix
The following packages have been kept back:
fail2ban gnupg libsasl2 libsasl2-dev libsasl2-modules
libsasl2-modules-sql
The following packages will be upgraded:
libfreetype6 libfreetype6-dev
2 packages upgraded, 0 newly installed, 7 to remove and 6 not upgraded.
Need to get 0B/1057kB of archives. After unpacking 9978kB will be freed.
Do you want to continue? [Y/n/?] n
BITTE WAS? spamassassin und spamc unused? Ne, is klar! Danach geht vermutlich mein kompletter MTA nicht mehr, aber deinstallier das doch mal.. Pffff!

Antworten