Cómo ejecutar varios comandos en varios servidores Linux


Si está administrando varios servidores Linux y desea ejecutar varios comandos en todos los servidores Linux, pero no tiene idea de cómo hacerlo. No hay necesidad de preocuparse, en esta sencilla guía de administración de servidores, le mostraremos cómo ejecutar múltiples comandos en múltiples servidores Linux simultáneamente.

Para lograrlo, puede utilizar el programa pssh (ssh paralelo), una utilidad de línea de comandos para ejecutar ssh en paralelo en varios hosts. Con él, puede enviar entradas a todos los procesos ssh, desde un script de shell.

  1. Instale Pssh para ejecutar comandos en varios servidores Linux remotos
  2. Debe utilizar la autenticación sin contraseña SSH para todos los servidores remotos.

Crear una secuencia de comandos de Shell

Por lo tanto, debe comenzar por preparar un script que contenga los comandos de Linux que desea ejecutar en los diferentes servidores. En este ejemplo, escribiremos un script que recopilará la siguiente información de varios servidores:

  • Verifique el tiempo de actividad de los servidores
  • Compruebe quién inició sesión y qué está haciendo
  • Enumere los 5 procesos principales en ejecución según el uso de memoria.

Primero cree un script llamado commands.sh con su editor favorito.

# vi commands.sh

A continuación, agregue los siguientes comandos al script como se muestra.

#!/bin/bash 
###############################################################################
#Script Name    : commands.sh                       
#Description    : execute multiple commands on multiple servers                                                                     
#Author         : Aaron Kili Kisinga       
#Email          : [email protected] 
################################################################################
echo
# show system uptime
uptime
echo
# show who is logged on and what they are doing
who
echo
# show top 5 processe by RAM usage 
ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head -n 6

exit 0

Guarde el archivo y ciérrelo. Luego haga que el script sea ejecutable como se muestra.

# chmod +x commands.sh

Crear archivo de hosts PSSH

A continuación, agregue la lista de servidores en los que desea ejecutar los comandos, en un archivo hosts.txt, en el formato [[email protected]] host [: port] o simplemente proporcione la IP del servidor direcciones.

Pero le sugerimos que utilice alias ssh que se pueden especificar en el archivo .ssh/config como se explica en cómo configurar conexiones ssh personalizadas para simplificar el acceso remoto.

Este método es más eficiente y confiable, le permite especificar opciones de configuración (como nombre de host, archivo de identificación, puerto, nombre de usuario, etc.) para cada servidor remoto.

A continuación se muestra nuestro archivo de alias de hosts ssh de muestra, también conocido como archivo de configuración ssh específico del usuario.

# vi ~/.ssh/config

A continuación, cree un archivo hosts.txt, aquí simplemente puede especificar los alias (nombres definidos mediante la palabra clave Host en el archivo .ssh/config) como se muestra.

# vi hosts.txt 

Agregue los alias del servidor.

server1
server2
server3

Ejecute comandos a través de un script en varios servidores Linux

Ahora ejecute el siguiente comando pssh especificando el archivo hosts.txt junto con el script que contiene múltiples comandos para ejecutar en múltiples servidores remotos.

# pssh -h hosts.txt -P -I<./commands.sh

Significado de las banderas utilizadas en el comando anterior:

  • -h : lee el archivo de hosts.
  • -P : le dice a pssh que muestre la salida a medida que llega.
  • -I : lee la entrada y la envía a cada proceso ssh.

¡Eso es! En este artículo, mostramos cómo ejecutar varios comandos en varios servidores en Linux. Puede compartir cualquier pensamiento relacionado con este tema a través de la sección de comentarios a continuación.