Ricerca nel sito web

DSH (Dancer's Shell): esegui comandi su più host Linux


Gli amministratori di sistema sono ben consapevoli dell'importanza di poter monitorare e amministrare numerose macchine in un breve lasso di tempo, preferibilmente con un movimento fisico minimo. Che si tratti di un piccolo ambiente cloud o di un grande cluster di server, la capacità di gestire centralmente i computer è essenziale.

Per realizzare in parte questo, ti mostrerò come utilizzare un piccolo e ingegnoso strumento chiamato DSH (dancer's shell/shell distribuita) che consente a un utente di eseguire comandi su più macchine.

Cos'è il DSH?

DSH è l'abbreviazione di "Distributed Shell" o "Dancer's Shell", che è uno strumento disponibile gratuitamente sulla maggior parte delle principali distribuzioni di Linux ma può essere facilmente creato da una fonte se la tua distribuzione non lo include nel suo repository di pacchetti.

Installa DSH (Shell distribuita) in Linux

Per lo scopo di questo tutorial assumeremo un ambiente Debian/Ubuntu. Se stai utilizzando un'altra distribuzione, sostituisci i comandi appropriati per il tuo gestore di pacchetti.

Sulle distribuzioni basate su Debian, puoi installare DSH utilizzando il seguente comando apt nel terminale.

sudo apt install dsh

Sulle distribuzioni basate su RHEL, devi compilarlo dai sorgenti tar, ma prima di farlo assicurati di compilare e installare la libreria "libdshconfig".

wget http://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-0.20.10.cvs.1.tar.gz
tar xfz libdshconfig*.tar.gz 
cd libdshconfig-*
./configure ; make
sudo make install

Quindi compila dsh e installa.

wget https://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.22.0.tar.gz
tar xfz dsh-0.22.0.tar.gz
cd dsh-*
./configure ; make 
sudo make install

Come utilizzare DSH in Linux

Il file di configurazione principale “/etc/dsh/dsh.conf” (per Debian) e “/usr/local/etc/dsh.conf " (per Red Hat) è piuttosto semplice, ma poiché rsh è un protocollo non crittografato, utilizzeremo SSH come shell remota.

Utilizzando l'editor di testo di tua scelta, trova questa riga:

remoteshell =rsh

e modificarlo in:

remoteshell =ssh

Ci sono altre opzioni che puoi inserire qui se lo desideri, e ce ne sono molte da trovare nella pagina man di dsh. Per ora, accetteremo le impostazioni predefinite e daremo un'occhiata al file successivo, /etc/dsh/machines.list (per Debian).

Per i sistemi basati su Red Hat è necessario creare un file chiamato "machines.list" nella cartella "/usr/local/etc/" directory.

La sintassi qui è piuttosto semplice. Tutto quello che devi fare è inserire le credenziali di una macchina (Nome host, Indirizzo IP o FQDN) una per riga.

Nota: quando accedi a più di un computer contemporaneamente, sarebbe opportuno impostare SSH senza password basato su chiave su tutti i tuoi computer. Ciò non solo garantisce facilità di accesso, ma, dal punto di vista della sicurezza, rafforza anche la tua macchina.

Il mio file "/etc/dsh/machines.list" o "/usr/local/etc/machines.list" dice:

172.16.25.125
172.16.25.126

Dopo aver inserito le credenziali delle macchine a cui desideri accedere, eseguiamo un semplice comando come uptime su tutte le macchine.

dsh -aM -c uptime

Esempio di output:

172.16.25.125: 05:11:58 up 40 days, 51 min, 0 users, load average: 0.00, 0.01, 0.05
172.16.25.126: 05:11:47 up 13 days, 38 min, 0 users, load average: 0.00, 0.01, 0.05

Quindi, cosa fa il comando “dsh”?

Abbastanza semplice. Innanzitutto, abbiamo eseguito dsh e gli abbiamo passato l'opzione “-a”, che dice di inviare il comando “uptime” a “TUTTE” delle macchine elencate in “/etc/dsh/machines.list“.

Successivamente, abbiamo specificato l'opzione "-M", che dice di restituire il "nome macchina" (specificato in "/etc/dsh/machines.list<“) insieme all'output del comando uptime. (Molto utile per l'ordinamento quando si esegue un comando su un numero di macchine).

L'opzione "-c" sta per "comando da eseguire", in questo caso "uptime".

DSH può anche essere configurato con gruppi di macchine nel file “/etc/dsh/groups/”, dove è un file con un elenco di macchine nello stesso formato di il file "/etc/dsh/machines.list". Quando esegui dsh su un gruppo, specifica il nome del gruppo dopo l'opzione "-g".

Per i sistemi basati su Red Hat è necessario creare una cartella denominata "groups" nella directory "/usr/local/etc/". Nella directory "groups" crei un file chiamato "cluster".

Ad esempio, esegui il comando "w" su tutte le macchine elencate nel file di gruppo "cluster" "/etc/dsh/groups/cluster " o "/usr/local/etc/groups/cluster".

dsh -M -g cluster -c w

DSH offre molta più flessibilità e questo tutorial è solo la superficie. Oltre a eseguire comandi, DSH può essere utilizzato per trasferire file, installare software, aggiungere percorsi e molto altro.

Per un amministratore di sistema incaricato della responsabilità di una rete di grandi dimensioni, questo ha un valore inestimabile.