In der Administration von kleiner Rechner- oder Serverlandschaften ist oft das parallele Senden von SSH-Kommandos an mehrere Systeme notwendig oder zumindest sehr nützlich. Dazu gibt es unter Linux das interessantes Tool CSSH, mit dem man sehr effektiv arbeiten kann und SSH-Kommandos parallel an mehrere Rechner senden kann.
Installation
CSSH ist in den offiziellen Paketquellen enthalten und daher einfach auf dem Administrationsrechner zu installieren.
:~$ sudo apt install clusterssh
Auf allen Clientsystemen muss OpenSSH installiert sein.
:~$ sudo apt install openssh-server
Nach der Installation kann CSSH über den Starter oder über ein Terminal aufgerufen werden. Beim ersten Start wird im home-Verzeichnis des Users ein Verzeichnis .clusterssh und die Datei config angelegt, über die man CSSH benutzerspezifisch konfigurieren kann. Anfänglich sind die Defaultwerte eingetragen und alle Zeilen sind auskommentiert.
#auto_close=5 #auto_quit=yes #command= #comms=ssh #console=console #console_args= #console_position= #debug=0 #external_cluster_command= #extra_cluster_file= #history_height=10 #history_width=40 #key_addhost=Control-Shift-plus #key_clientname=Alt-n #key_history=Alt-h #key_localname=Alt-l #key_macros_enable=Alt-p #key_paste=Control-v #key_quit=Alt-q #key_retilehosts=Alt-r #key_username=Alt-u #lang=en #macro_hostname=%h #macro_newline=%n #macro_servername=%s #macro_username=%u #macro_version=%v #macros_enabled=yes #max_addhost_menu_cluster_items=6 #max_host_menu_items=30 #menu_host_autotearoff=0 #menu_send_autotearoff=0 #mouse_paste=Button-2 #rsh=rsh #rsh_args= #screen_reserve_bottom=60 #screen_reserve_left=0 #screen_reserve_right=0 #screen_reserve_top=0 #send_menu_xml_file=/home/eqeadmin/.clusterssh/send_menu #sftp=sftp #sftp_args= #show_history=0 #ssh=ssh #ssh_args= #telnet=telnet #telnet_args= #terminal=xterm #terminal_allow_send_events=-xrm '*.VT100.allowSendEvents:true' #terminal_args= #terminal_bg_style=dark #terminal_colorize=1 #terminal_decoration_height=10 #terminal_decoration_width=8 #terminal_font=6x13 #terminal_reserve_bottom=0 #terminal_reserve_left=5 #terminal_reserve_right=0 #terminal_reserve_top=5 #terminal_size=80x24 #terminal_title_opt=-T #title=CSSH #unmap_on_redraw=no #use_all_a_records=0 #use_hotkeys=yes #use_natural_sort=0 #user= #window_tiling=yes #window_tiling_direction=right
CSSH im Terminal verwenden
Um die Verbindung zu einem Rechner herzustellen, startet man im Terminal CSSH mit der IP oder mit Benutzername und IP.
# oder mit vorgegebenen Benutzernamen
:~$ cssh administrator@192.168.0.100
Die Sytnax für den Terminalaufruf lautet
cssh [Username@]<IP oder Hostname> [Username@]<IP oder Hostname> [Username@]<IP oder Hostname> ...
CSSH präsentiert sich selbst sehr spartanisch und öffnet zu jeder SSH-Verbdindung ein Terminalfenster.
Die Eingaben in die Kommandozeile werden an alle verbundenen Rechner gesendet (sofern sie nicht temporär disconnected sind).
Gruppen und Cluster anlegen
Um Gruppen von Rechnern aufzurufen, müssen sie zunächst in /etc/clusters oder in /etc/csshrc bzw. /home/<user>/.csshrc definiert werden. Die Rechner werden dabei zu Gruppen zusammen gefasst und die Gruppen können wiederum in Cluster zusammengefasst werden. Dabei muss die unterschiedliche Syntax in den Dateien beachtet werden, was leider in vielen Artikeln im Netz nicht korrekt beschrieben wird.
etc/clusters
Die einfachste Methode ist die Definition der verschiedenen Gruppen in /etc/clusters:
Clusters Clients Mailserver Webserver Clients admin@192.168.0.10 192.168.0.11 192.168.0.12 192.168.0.13 Mailserver mailadmin@mail.mydomain.de Webserver webadmin@192.168.10.200 Servers Mailserver Webserver
Auf den Clients wird sich CSSH mit dem Benutzernamen anmelden, mit dem es gestartet wurde, sofern kein expliziter Benutzername wie bei 192.168.0.10 und am Mail- und Webserver angegeben wurde. Diese Konfiguration gilt dann für alle Accounts des Rechners. Will man benutzerspezifische Konfigurationen anlegen, müssen sie sich im jeweiligen Home-Verzeichnis befinden:
/etc/csshrc und $home/.csshrc
Das gilt auch für /etc/csshrc bzw. /home/<user>/.csshrc, allerdings lautet die Syntax (warum auch immer) hier:
Clusters = Clients Mailserver Webserver Clients = 192.168.0.10 192.168.0.11 192.168.0.12 192.168.0.13 Mailserver = mailadmin@mail.mydomain.de Webserver = webadmin@192.168.10.200 Servers = Mailserver Webserve
Über das HOST-Menü können die Gruppen nun über Add Hosts -> Add Host(s) or Cluster(s) gestartet oder zu bereits verbundenen Gruppen hinzugefügt werden und über das Eingabefeld Host können weitere Rechner per IP oder Hostname hinzugefügt werden.
Eine oder mehrere Gruppe lassen sich auch direkt aus dem Terminal starten.
In diesem Pull-Down-Menü lassen sich die Verbindung/Übertragung auch kurzfristig deaktivieren, indem man auf die Tic-Box vor der IP bzw. dem Hostnamen klickt.
Telnet und RSH
Anstatt SSH kann CSSH auch Telnet und RSH verwenden. Dazu startet man im Terminal mit ctel oder crsh und gibt den gewünschten Port mit dem Parameter -p an.
Die Dokumentation zu CSSH findet man -> hier und im Programm selbst unter Help.
1 Comment