Hace un tiempo, escribimos una guía que describía cómo ejecutar un solo comando en varios sistemas remotos a la vez usando PSSH en sistemas tipo Unix. Hoy vamos a hablar sobre una herramienta similar llamada DSH . Significa 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 con C lenguaje de programación.
Instalar DSH
En Arch Linux y derivados:
DSH está disponible en AUR , para que pueda instalarlo usando los ayudantes de AUR, por ejemplo, Yay , como se muestra a continuación.
$ 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 remoteshell valor de 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.
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 hacerlo, cree/edite la máquinas.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 cantidad de hosts remotos en machines.list archivo.
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. Digamos, por ejemplo, que el siguiente comando ejecutará 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 configure el 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