Uso de DSH (Shell distribuido) para ejecutar comandos de Linux en varias máquinas


Los administradores de sistemas conocen muy bien la importancia de poder monitorear y administrar numerosas máquinas en poco tiempo y, preferiblemente, con la menor cantidad de tiempo posible. Tanto si se trata de un entorno de nube pequeño como de un enorme clúster de servidores, la capacidad de gestionar ordenadores de forma centralizada es fundamental.

Para lograr esto en parte, le mostraré cómo usar una pequeña herramienta ingeniosa llamada DSH que permite al usuario ejecutar comandos en varias máquinas.

Lea también: Pssh: ejecutar comandos en varios servidores Linux remotos

¿Qué es DSH?

DSH es la abreviatura de "Distributed Shell" o "Dancer's Shell". Está disponible gratuitamente en la mayoría de las principales distribuciones de Linux, pero puede construirse fácilmente desde la fuente si su distribución no lo ofrece en su repositorio de paquetes. Puede obtener la fuente en.

  1. http://www.netfort.gr.jp/~dancer/software/dsh.html.en

Instalar 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.

Primero, instalemos el paquete a través de apt:

$ sudo apt-get install dsh

Este método es para aquellos que no están usando Debian y quieren compilarlo a partir de bolas de alquitrán de origen. Primero debe compilar "libdshconfig" e instalarlo.

# 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
# make install

Luego compile dsh e instálelo.

# wget http://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 
# make install

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 dado que rsh es un protocolo no cifrado, estamos va a usar SSH como shell remoto. Usando el editor de texto de su elección, busque esta línea:

remoteshell =rsh

Y cámbielo a:

remoteshell =ssh

Hay otras opciones que puede pasar aquí, si decide hacerlo, y hay muchas para 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 los sistemas basados u200bu200ben Red Hat, necesita crear un archivo llamado "machines.list" en el directorio "/ usr/local/etc /".

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

Nota: Cuando acceda a más de una máquina simultáneamente, le convendría configurar SSH sin contraseña basada en claves en todas sus máquinas. Esto no solo proporciona facilidad de acceso, sino que también en términos de seguridad, endurece 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
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é hizo este comando?

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

A continuación, especificamos la opción “–M”, que dice devolver 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”. Cuando ejecute dsh en un grupo, especifique el nombre del grupo después de la opción "-g".

Para los sistemas basados u200bu200ben Red Hat, necesita crear una carpeta llamada "grupos" en el directorio "/ usr/local/etc /". En ese directorio de "grupos" creas un archivo llamado "cluster".

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 rasca la superficie. Además de ejecutar comandos, DSH se puede usar para transferir archivos, instalar software, agregar rutas y mucho más.

Para un administrador de sistemas encargado de la responsabilidad de una gran red, es invaluable.