Comandos interesantes, dsh

Hoy navegando por la inmensa lista de paquetes que proporciona Debian me encontré con una herramienta cuando menos interesante, dsh. Es un comando que permite conectar de forma remota con un grupo de máquinas de forma que facilita enormemente la ejecución del mismo comando en diferentes máquinas. O dicho de otra forma... es un pequeño script que va iterando entre un grupo de máquinas y conectándose y ejecutando el mismo comando en todas y cada una de ellas.
Vamos primeramente a instalarlo. Los sistemas basados en Debian lo incluyen en su repositorio, por lo tanto,
shell> apt-get install dsh
Una vez esté instalado, lo primero que tenemos que hacer es editar el fichero de configuración (/etc/dsh/dsh.conf) y cambiar la shell remota que emplea por defecto de rsh a ssh. Hay que securizar nuestros entornos ;-)
# default configuration file for dsh.

verbose = 0 
remoteshell = ssh
showmachinenames = 0
waitshell = 1  # whether to wait for execution

#remoteshellopt=...
Una vez tengamos esto listo, sólo faltará crear el grupo de máquinas a las que nos interesa conectar. Un grupo no es más que un fichero que contiene un listado de nombres o IP's a las que conectarse. Una por línea. Por lo tanto, crearemos el siguiente fichero, maquinas_locales, que tendrá las máquinas GNU/Linux de nuestra red local. Dicho fichero lo colocaremos en /etc/dsh/group/maquinas_locales y el contenido será,
shell> cat /etc/dsh/group/maquinas_locales 
puppet.local.net
apache.local.net
dhcp.local.net
192.168.1.33
192.168.1.45
192.168.1.24
localhost
Como se observa aquí, incluimos tanto nombres como IP's y puesto que también nos interesa que nuestra máquina local esté afectada por los comandos, también la incluimos.
Podemos crear tantos grupos como queramos con las máquinas que nos interese, únicamente habrá que acordarse del nombre.
Vamos ahora a comenzar a trabajar contra todos los equipos. Por ejemplo, vamos a solicitar la salida del comando uptime. Entonces... según las diferentes opciones que presenta dsh,
  • Ejecución al grupo all (por defecto)
    shell> dsh -a uptime
    
  • Ejecución del comando a una máquina concreta
    shell> dsh -m 192.168.1.33 -m puppet.local.net uptime
    
  • Ejecución del comando a un grupo de máquinas
    Por defecto, según lo especificado en el fichero de configuración, se lanza el comando y se espera a que se ejecute antes de "lanzarlo" a otra máquina.
    shell> dsh -g maquinas_locales uptime
    
  • Ejecución del comando a un grupo de máquinas de forma concurrente
    shell> dsh -c -g maquinas_locales uptime
    
  • Ejecución del comando indicando en qué máquina se ejecuta
    Por defecto no indica el nombre de la máquina, esto implica que no sepamos de qué máquina proviene.
    shell> dsh -M -g maquinas locales uptime
    
La idea de emplear ssh como shell por defecto, es por motivos de seguridad y también por que tenemos la clave ssh compartida entre las máquinas locales, por lo que no tendremos que repetir una y otra vez la contraseña cada vez que nos tengamos que conectar a una nueva máquina. Algo importante y que sirve para automatizar aún más el proceso.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios