GNU/Linux >> Linux Esercitazione >  >> Linux

DSH – Esegui un comando Linux su più host alla volta

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 , 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

Linux
  1. Ssh su più host ed eseguire un comando?

  2. Esempi di comandi temporali di Linux

  3. Esegui il comando su più server Linux da Windows

  4. Esempi di comandi timedatectl in Linux

  5. linux:come eseguire un comando in una determinata directory

Come eseguire un comando per un tempo specifico in Linux

Come eseguire più comandi Linux in un unico comando

11 Esempi utili di comandi data di Linux

Come eseguire più comandi Linux contemporaneamente nel terminale Linux

Esempi di comandi data di Linux

Comprendere il comando dell'ora in Linux