Script en bash que hace ping a tus servidores

Hace unos días me encontré con el script pingservers de I. Attir y lo modifiqué un poco a mi gusto.

El script toma una lista de direcciones ip de los servidores que queremos revisar, una ip por cada renglón y les hace ping, si obtiene respuesta entonces muestra un mensaje de OK, de lo contrario, muestra un error en la pantalla, hace un nmap a la misma dirección para comprobar que este totalmente fuera de servicio. Además, también guarda un registro de los errores en el archivo noping.log para su futura referencia.

Originalmente el script manda un correo al administrador, pero a mi no me sirve esa opción, primero porque si el que falla es el servidor de Internet, pues nunca voy a recibir el correo, además me gusta ejecutarlo manualmente para revisar la salud de mi red y si hay algún problema atenderlo inmediatamente.

Mis modificaciones incluyen una traducción al español de los mensajes, agregué el comando nmap (que tiene que estar instalado) y le agregué un poco de color.

el script pingservers en acción

#!/bin/bash
# pingservers.sh
# ==============
# Hace ping a una lista de direcciones IP, revisa si los servidores estan activos o no.
# Escrito por:I. Attir
# http://www.good-linux-tips.com/2014/06/script-checking-if-servers-are-up.html
#
# Modificaciones y traducción al Español por: Francisco J. de la Torre Inguanzo
# https://linuxmanr4.com/2014/06/06/script-en-bash-que-hace-ping-tus-servidores/ 

clear

if [ "$1" = "" ] ; then  # No se pasó una lista de ips
   echo "Error: Por favor introduce un nombre de archivo válido, que contenga las direcciones IP para hacer ping."
exit 1
fi
if [ ! -f "$1" ] ; then  # Archivo inválido.
   echo "Error: No puedo encontrar el archivo "$1"."
exit 2
fi

echo "(*) Haciendo ping a los servidores contenidos en el archivo "$1", por favor espere..."
echo

while read IP
do
   ping -c 3 "$IP" >& /dev/null
   
 if [ "$?" != "0" ] ; then   # Houston, tenemos un problema.
   (echo -n "$IP  " ; date) | tee -a noping.log 
   echo -e     "${IP} !!! \e[0;31m[X]\e[1;37m"
   nmap "$IP"
 else echo -e  "$IP \e[1;32m[OK]\e[1;37m" 
 fi
done < "$1"
echo
echo "Listo!!!"

9 comentarios en «Script en bash que hace ping a tus servidores»

  1. Hola como estas?
    Necesito un script similar, solo que haga ping y si funciona todo bien envie un mail con thunderbird con un mensaje positivo, y si una ip no responde o varias de ellas me mande un mail con un mensaje como «La/s siguiente/s ip no responden» y el llistado de las ip que no respondan.
    Me podras ayudar?
    gracias!

    Responder
  2. Saludos, interesante, yo hice algo parecido pero con python, use el comando fping que me devuelve si esta vivo o no, adicional a eso también miro la capacidad en disco de los Servidores

    Responder
    • Es lo bonito de esto, se que hay soluciones mucho más completas, pero por el momento este script esta bien y justo hoy puso a prueba su utilidad 🙂

      Responder

¡Me encantaría saber que opinas!

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.