Tempo fa abbiamo scritto una guida che descriveva come eseguire un singolo comando su più sistemi remoti contemporaneamente usando PSSH nei sistemi simili a Unix. Oggi parleremo di uno strumento simile chiamato DSH . Sta per D distribuito sh ell (o guscio di ballerino). Usando DSH, possiamo eseguire un comando linux su più host alla volta. È un'utilità gratuita e open source scritta utilizzando C linguaggio di programmazione.
Installa DSH
Su Arch Linux e derivati:
DSH è disponibile in AUR , quindi puoi installarlo utilizzando gli helper AUR, ad esempio Sì , come mostrato di seguito.
$ yay -S dsh
Su Debian, Ubuntu:
DSH è disponibile nei repository ufficiali di Debian, Ubuntu e altri sistemi basati su DEB come Linux Mint, Elementary OS. Per installarlo DSH in qualsiasi sistema basato su DEB, eseguire:
$ sudo apt-get install dsh
Per altre distribuzioni Linux, DSH può essere compilato e installato manualmente come descritto di seguito.
DSH richiede libdshconfig per lavorare. Puoi scaricare l'ultima versione di libdshconfig e dsh da questo link .
Una volta scaricato, vai alla directory in cui hai scaricato entrambi i pacchetti.
Per prima cosa compila e installa libdshconfig utilizzando i comandi:
$ tar xfz libdshconfig*.tar.gz
$ cd libdshconfig-*
$ ./configure ; make
$ sudo make install
Quindi, compila e installa anche dsh.
$ tar xfz dsh*.tar.gz
$ cd dsh-*
$ ./configure ; make
$ sudo make install
Configura DSH
Abbiamo installato dsh. Configuriamo ora DSH per eseguire comandi su più host. Per fare ciò, prima modifica il file di configurazione DSH e imposta il valore della shell remota da rsh a ssh.
Su Arch Linux e derivati, il file di configurazione predefinito è /etc/kgname/dsh.conf .
Modifica questo file:
$ sudo vi /etc/kgname/dsh.conf
Cambia conchiglia remota valore da rsh a ssh .
#default configuration file for dsh. # suppled as part of dancer's shell verbose = 0 remoteshell =ssh showmachinenames = 0 waitshell=1 # whether to wait for execution #remoteshellopt=... # default config file end.
Sui sistemi basati su DEB:
$ sudo vi /etc/dsh/dsh.conf remoteshell =ssh
Su sistemi basati su RPM:
$ sudo vi /usr/local/etc/dsh.conf remoteshell =ssh
Successivamente, dobbiamo aggiungere gli host remoti in cui vogliamo eseguire i comandi.
Per farlo, crea/modifica machines.list file e aggiungi gli host remoti.
Su Arch Linux e derivati:
$ sudo vi /etc/kgname/machines.list
Aggiungi l'IP o il nome host dell'host remoto uno per uno come mostrato di seguito.
192.168.43.100 192.168.43.101
Su sistemi basati su DEB:
$ sudo vi /etc/dsh/machines.list 192.168.43.100 192.168.43.101
Su sistemi basati su RPM:
$ sudo vi /usr/local/etc/machines.list 192.168.43.100 192.168.43.101
Puoi aggiungere un numero qualsiasi di host remoti in machines.list file.
Esegui un comando Linux su più host alla volta utilizzando DSH
Dopo aver aggiunto tutti gli host remoti e creato un utente comune su tutti i tuoi sistemi remoti, puoi eseguire il comando Linux su tutti gli host remoti contemporaneamente. Supponiamo, ad esempio, che il comando seguente eseguirà uname -r comando su tutti gli host remoti contemporaneamente.
$ dsh -a -c uname -r
Ti chiederà di inserire il nome utente e la password del rispettivo host remoto. Se non vuoi inserire le credenziali dell'utente ogni volta che esegui questo comando, basta configurare l'accesso SSH senza password .
Risultato di esempio:
3.10.0-514.16.1.el7.x86_64 4.4.0-34-generic
Come puoi vedere nell'output sopra, l'utilità dsh mostra la versione del kernel dei miei due host remoti.
Per maggiori dettagli, fare riferimento alla pagina man.
$ man dsh
Lettura consigliata:
- Esegui comandi su sistemi Linux remoti tramite SSH