DSH: ejecute un comando de Linux en varios hosts a la vez

Hace un tiempo, escribimos una guía que describía cómo ejecutar un solo comando en múltiples sistemas remotos a la vez usando PSSH en sistemas tipo Unix. Hoy, vamos a discutir acerca de una herramienta similar llamada DSH . Lo que representa D distribuido sh ell (o concha de bailarina). Usando DSH, podemos ejecutar un comando de Linux en múltiples hosts a la vez. Es una utilidad gratuita y de código abierto escrita usando C lenguaje de programación.

Instalar DSH

En Arch Linux y derivados:

DSH está disponible en ORO para que pueda instalarlo usando los ayudantes de AUR, por example Hurra Como se muestra abajo.

                      $ yay -S dsh
                    

En Debian , Ubuntu :

DSH está disponible en los repositorios oficiales de Debian, Ubuntu y otros sistemas basados ​​en DEB como Linux Mint, Elementary OS. Para instalarlo DSH en cualquier sistema basado en DEB, ejecute:

                      $ sudo apt-get install dsh
                    

Para otras distribuciones de Linux, DSH se puede compilar e instalar manualmente como se describe a continuación.

DSH requiere libdshconfig para que funcione. Puede descargar la última versión de libdshconfig y dsh desde este enlace .

Una vez descargado, vaya al directorio donde ha descargado ambos paquetes.

Primero compile e instale libdshconfig usando los comandos:

                      $ tar xfz libdshconfig*.tar.gz
                    
                      $ cd libdshconfig-*

                    
                      $ ./configure ; make
                    
                      $ sudo make install
                    

Luego, compile e instale dsh también.

                      $ tar xfz dsh*.tar.gz

                    
                      $ cd dsh-*
                    
                      $ ./configure ; make
                    
                      $ sudo make install
                    

Configurar DSH

Hemos instalado dsh. Ahora configuremos DSH para ejecutar comandos en múltiples hosts. Para hacerlo, primero edite el archivo de configuración de DSH y establezca el valor de shell remoto de rsh a ssh.

En Arch Linux y derivados, el archivo de configuración predeterminado es /etc/kgname/dsh.conf .

Edite este archivo:

                      $ sudo vi /etc/kgname/dsh.conf
                    

Cambiar shell remoto valor de rsh para 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.
                    

En sistemas basados ​​en DEB:

                      $ sudo vi /etc/dsh/dsh.conf

remoteshell =ssh
                    

En sistemas basados ​​en RPM:

                      $ sudo vi /usr/local/etc/dsh.conf

remoteshell =ssh
                    

A continuación, debemos agregar los hosts remotos donde queremos ejecutar los comandos.

Para ello, cree/edite el maquinas.lista y agregue los hosts remotos.

En Arch Linux y derivados:

                      $ sudo vi /etc/kgname/machines.list
                    

Agregue la IP o el nombre de host del host remoto uno por uno, como se muestra a continuación.

                      192.168.43.100 
192.168.43.101
                    

En sistemas basados ​​en DEB:

                      
                        $ sudo vi /etc/dsh/machines.list
                      
                      
192.168.43.100 
192.168.43.101
                    

En sistemas basados ​​en RPM:

                      
                        $ sudo vi /usr/local/etc/machines.list
                      
                      
192.168.43.100
192.168.43.101
                    

Puede agregar cualquier número de hosts remotos en el maquinas.lista expediente.

Ejecute un comando de Linux en varios hosts a la vez mediante DSH

Una vez que haya agregado todos los hosts remotos y haya creado un usuario común en todos sus sistemas remotos, puede ejecutar el comando de Linux en todos los hosts remotos a la vez. decir por exampleel siguiente comando ejecutará el uname -r Comando en todos los hosts remotos a la vez.

                      $ dsh -a -c uname -r
                    

Le pedirá que ingrese el nombre de usuario y la contraseña del host remoto respectivo. Si no desea ingresar las credenciales de usuario cada vez que ejecuta este comando, simplemente configurar inicio de sesión SSH sin contraseña .

Salida de muestra:

                      3.10.0-514.16.1.el7.x86_64
4.4.0-34-generic
                    

Como puede ver en el resultado anterior, la utilidad dsh muestra la versión Kernel de mis dos hosts remotos.

Para obtener más detalles, consulte la página del manual.

                      $ man dsh
                    

Lectura sugerida:

  • Ejecutar comandos en sistemas Linux remotos a través de SSH

Recurso:

¡Gracias por pasar!

Ayúdanos a ayudarte:

¡¡Que tenga un buen día!!

Related Posts