Búsqueda de sitios web

Cómo ejecutar varios comandos en varios servidores Linux


Si administra 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 información a todos los procesos ssh, desde un script de shell.

Requisitos

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

Crear un script de shell

Por lo tanto, debe comenzar preparando 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:

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

Primero crea un script llamado commands.sh con tu 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  
################################################################################
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 [user@]host[:port] o simplemente proporcione las direcciones IP del servidor.

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í puede simplemente especificar los alias (nombres definidos usando 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 mediante 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 todo! En este artículo, mostramos cómo ejecutar múltiples comandos en múltiples servidores en Linux. Puede compartir cualquier idea relacionada con este tema a través de la sección de comentarios a continuación.