Lösung 1:
-
Stoff
Definieren Sie zuerst Ihre Aufgaben:
from fabric.api import * @parallel @hosts('192.168.3.118', '192.168.6.142') def hostname(): run('hostname')
Dann über den
fab
ausführen Befehlszeilentool:$ fab -f /path/to/.py/file hostname [192.168.3.118] Executing task 'hostname' [192.168.6.142] Executing task 'hostname' [192.168.6.142] run: hostname [192.168.3.118] run: hostname [192.168.6.142] out: SVR040-6142 [192.168.3.118] out: SVR040-3118.localdomain Done.
- Gnome-Verbindungsmanager
- PAC-Manager
Lösung 2:
Werfen Sie einen Blick auf Rundeck - http://rundeck.org/
Lösung 3:
Sie können aufs Ganze gehen und ein Konfigurationsmanagementsystem wie Puppet oder Chef installieren. Sie haben nicht erwähnt, wie viele Knoten Sie tatsächlich zu verwalten versuchen, also könnte dies übertrieben sein, aber sicherlich können Sie auf diese Weise viele Maschinen zentral steuern. Wenn Sie noch klein sind, aber wachsen, möchten Sie vielleicht auch Chefkoch gründen, bevor Sie so viel größer werden.
Wenn Sie Ad-hoc-Befehle über einen bestimmten Satz von Knoten ausführen müssen, können Sie so etwas wie knife ssh 'roles:webserver' 'hostname'
tun (Knife ist das Befehlszeilentool für den Koch), um hostname
auszuführen Befehl für alle Knoten, die die Webserver-Rolle haben.
Lösung 4:
Ich bevorzuge shmux, um denselben Befehl auf vielen Hosts parallel auszuführen.
Lösung 5:
Ich verwende Expect-Skripte, um die Anmeldungen zu automatisieren (insbesondere, weil ich durch eine Jumbbox gehen und eine Chroot eingeben muss und viele Passwörter eingegeben werden müssen) und habe einige "Optimierungen" an der Konfiguration von cssh vorgenommen. Also, ich habe dies " main script" in meinem bin-Ordner, der mich mit einem "Servernamen/Alias" zu dem Server bringt, den ich will und wohin ich will.
In der ~/.clusterssh/config habe ich den Parameter „ssh“ so eingestellt, dass er auf mein Skript zeigt, auch „ssh_args“ muss auf ein harmloses/falsches Argument eingestellt werden, das liegt daran, dass cssh seine Standard-Argumentliste hat, wenn sie tatsächlich leer bleibt die Standardliste wird am Ende das Skript sein.
Das Skript (in jedem Fenster/Terminal) erhält also diese Argumente und 1 der Argumente, die an cssh gegeben wurden, das Skript, das es aus einer Datei für den angegebenen Server wiederherstellt, die festgelegten Anmeldeinformationen und die Schritte, die es ausführen muss, um anzukommen wo Ich möchte, dann ruft es den "Expect-Code" mit all diesen Daten auf.
~/.clusterssh/config
ssh=/home/user/bin/qs.sh
ssh_args=-a
qs.sh
#!/bin/bash
export PATH=~/bin:$PATH
shift
case $1 in
q4|q5|q6|q7|q8|q9)
essh [email protected]$1
### essh it's some little bash script that does the things I said before and in the end it launches the expect
;;
q1|q2|q3)
essh [email protected]$1
;;
*)
echo "GOOH"
esac
also nenne ich es normalerweise so:
# cssh q4 q5 q6 q7
es funktioniert auch mit "cluster aliases" mit dem cluster "qAll q4 q5 q6 q7" kann ich mit cssh qAll aufrufen
Hoffe, es hilft jemand anderem.