Búsqueda de sitios web

DSH (Dancer's Shell): ejecutar comandos en varios hosts Linux


Los Administradores de Sistemas son muy conscientes de la importancia de poder monitorear y administrar numerosas máquinas en un corto período de tiempo, preferiblemente con un mínimo movimiento físico. Ya sea que se trate de un pequeño entorno de nube o de un gran grupo de servidores, la capacidad de administrar computadoras de manera centralizada es esencial.

Para lograr esto en parte, le mostraré cómo usar una pequeña e ingeniosa herramienta llamada DSH (shell del bailarín/shell distribuido) que permite al usuario ejecutar comandos en múltiples máquinas.

¿Qué es DSH?

DSH es la abreviatura de 'Distributed Shell' o 'Dancer's Shell', que es una herramienta disponible gratuitamente en la mayoría de las principales distribuciones de Linux, pero que puede compilado fácilmente desde una fuente si su distribución no lo incluye en su repositorio de paquetes.

Instale DSH (Shell distribuido) en Linux

Vamos a asumir un entorno Debian/Ubuntu para el alcance de este tutorial. Si está utilizando otra distribución, sustituya los comandos apropiados por su administrador de paquetes.

En distribuciones basadas en Debian, puede instalar DSH usando el siguiente comando apt en la terminal.

sudo apt install dsh

En distribuciones basadas en RHEL, debe compilarlo desde las bolas tar de origen, pero antes de hacerlo, asegúrese de compilar e instalar la biblioteca 'libdshconfig'.

wget http://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-0.20.10.cvs.1.tar.gz
tar xfz libdshconfig*.tar.gz 
cd libdshconfig-*
./configure ; make
sudo make install

Luego compila dsh e instálalo.

wget https://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.22.0.tar.gz
tar xfz dsh-0.22.0.tar.gz
cd dsh-*
./configure ; make 
sudo make install

Cómo utilizar DSH en Linux

El archivo de configuración principal “/etc/dsh/dsh.conf” (para Debian) y “/usr/local/etc/dsh.conf ” (para Red Hat) es bastante sencillo, pero como rsh es un protocolo no cifrado, usaremos SSH como shell remoto.

Usando el editor de texto de su elección, busque esta línea:

remoteshell =rsh

y cambiarlo a:

remoteshell =ssh

Hay otras opciones que puede pasar aquí si lo desea, y hay muchas que puede encontrar en la página de manual de dsh. Por ahora, aceptaremos los valores predeterminados y echaremos un vistazo al siguiente archivo, /etc/dsh/machines.list (para Debian).

Para sistemas basados en Red Hat, debe crear un archivo llamado “machines.list” en el directorio “/usr/local/etc/”. directorio.

La sintaxis aquí es bastante sencilla. Todo lo que tiene que hacer es ingresar las credenciales de una máquina (Nombre de host, Dirección IP o FQDN) una por línea.

Nota: Al acceder a más de una máquina simultáneamente, le conviene configurar SSH sin contraseña basado en clave en todas sus máquinas. Esto no sólo proporciona un fácil acceso, sino que, en términos de seguridad, también protege su máquina.

Mi archivo “/etc/dsh/machines.list” o “/usr/local/etc/machines.list” dice:

172.16.25.125
172.16.25.126

Una vez que haya ingresado las credenciales de las máquinas a las que desea acceder, ejecutemos un comando simple como tiempo de actividad en todas las máquinas.

dsh -aM -c uptime

Resultado de muestra:

172.16.25.125: 05:11:58 up 40 days, 51 min, 0 users, load average: 0.00, 0.01, 0.05
172.16.25.126: 05:11:47 up 13 days, 38 min, 0 users, load average: 0.00, 0.01, 0.05

Entonces, ¿qué hace el comando "dsh"?

Bastante simple. Primero, ejecutamos dsh y le pasamos la opción “-a”, que dice enviar el comando “uptime” a “TODAS” de las máquinas enumeradas en “/etc/dsh/machines.list“.

A continuación, especificamos la opción “-M”, que dice que se devuelva el “nombre de la máquina” (especificado en “/etc/dsh/machines.list<“) junto con la salida del comando uptime. (Muy útil para ordenar cuando se ejecuta un comando en varias máquinas).

La opción "-c" significa "comando a ejecutar" en este caso, "tiempo de actividad".

DSH también se puede configurar con grupos de máquinas en el archivo “/etc/dsh/groups/”, donde hay un archivo con una lista de máquinas en el mismo formato que el archivo “/etc/dsh/machines.list”. Al ejecutar dsh en un grupo, especifique el nombre del grupo después de la opción “-g”.

Para los sistemas basados en Red Hat, debe crear una carpeta llamada “grupos” en el directorio “/usr/local/etc/”. En ese directorio “grupos” creas un archivo llamado “clúster“.

Por ejemplo, ejecute el comando “w” en todas las máquinas enumeradas en el archivo de grupo “cluster” “/etc/dsh/groups/cluster ” o “/usr/local/etc/groups/cluster“.

dsh -M -g cluster -c w

DSH proporciona mucha más flexibilidad y este tutorial solo toca la superficie. Además de ejecutar comandos, DSH se puede utilizar para transferir archivos, instalar software, agregar rutas y mucho más.

Para un administrador de sistemas encargado de la responsabilidad de una gran red, tiene un valor incalculable.