martes, 10 de enero de 2012

Shell Script Hacer ping a máquinas en archivo /etc/hosts

#!/bin/bash

#Un administrador de una máquina UNIX debe revisar día a día si hay conexión hacia todas las máquinas contenidas en el archivo /etc/hosts. Para ello dispone del comando
#   ping -c1 <nombre de la máquina destino>

#Como ejemplo, el comando
#  ping -c1 nutria
#envía y recibe un paquete hacia la máquina nutria. El valor de retorno del comando ping es el siguiente:
#  0   La máquina destino está viva, contesta normalmente.
#  1   La máquina destino no contesta.
#  2   Hubo algún error.
#Construir un script vivas que pruebe conectividad a todas las máquinas contenidas en el archivo /etc/hosts, y muestre el nombre de las máquinas indicando su estado, así:
 # RESPUESTA de máquinas en /etc/hosts:
 # nutria: está viva.
 # gaviota: no contesta.
 # coati: error en ping
#Sugerencias. Recordar que el archivo /etc/hosts puede tener comentarios. Redireccionar salida y error de ping para no confundir la salida del script.

if [ $# -gt 1  ] #comprobar número de parámetros introducidos
then          #gracias a Alejandro por sus buenas formas
    echo "¡¡Horror!! Uso "$0" "
    exit
fi


#cat /etc/hosts | grep -v ^\# | grep -v '^$' | gawk -F "\t"
echo "Respuesta de máquinas en /etc/hosts:"
LISTA=`cat /etc/hosts | grep -v "#" | cut -f2 `
for MAQ in $LISTA
do
    ping -c1 $MAQ >>/dev/null 2>&1
    case $? in
        0)
            echo $MAQ: está viva;;
        1)
            echo $MAQ: no contesta;;
        2)
            echo $MAQ: error en ping;;
    esac
done

No hay comentarios:

Publicar un comentario