SSH-Kommandos parallel an mehrere Rechner senden

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 update
:~$ sudo apt install clusterssh

Auf allen Clientsystemen muss OpenSSH installiert sein.

:~$ sudo apt update
:~$ 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.

:~$ cssh 192.168.0.100
# 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.

Menü und Kommandozeile in CSSH
Menü und Kommandozeile in CSSH

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.

Zusätzliche Hosts verbinden
Zusätzliche Hosts verbinden

Eine oder mehrere Gruppe lassen sich auch direkt aus dem Terminal starten.

:~$ cssh -l sk D1600 D1630

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.

Das Hosts-Menü
Das Hosts-Menü
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.

:~$ ctel -p 23 administrator@192.168.0.100

Die Dokumentation zu CSSH findet man -> hier und im Programm selbst unter Help.

Buy Me a Coffee at ko-fi.com

1 Comment

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.