Detectar equipos fuera de combate [Script]

detectar dispositivos desconectadosAunque soy consciente de que existen soluciones para la monitorización de redes (a mi mente, entre otros, vienen tanto Nagios como Cacti) mucho más eficientes y sofisticados que el script que os quiero presentar en este artículo ni soy administrador el administrador de la red de mi instituto (al menos no oficialmente 😉 ) ni cuento con los recursos suficientes (especialmente tiempo) para abordarlo.

Básicamente lo que necesito es saber cuándo se ha caído alguno de los puntos de acceso wifi (que por no tener no tienen SNMP) o a alguna impresora en red le ha dado por dejar de funcionar y, para ello, el siguiente script (que no deja de ser un ping “vitaminado”) me viene de perlas.

En mi “defensa” argumentar que es una versión “beta-peta” creada en los 10 minutos que me “sobraron” el otro día en la “guardia TIC” que tengo asignada (y que espero haber aprovechado convenientemente) por lo que agradeceré cualquier sugerencia y/o corrección que ayude a mejorarlo.

La idea es hacer ping a una lista de dispositivos y, para evitar tener que estar mirando los resultados uno a uno, quiero que marque en rojo las direcciones IP de los dispositivos que no están visibles en la red.

El script queda del siguiente modo

clear;ROJO='\033[0;31m';NORMAL='\033[0m'; for f in {1,8,3}; do echo -n "192.168.0.$f "; if [[ $(ping -c 1 192.168.0.$f | grep ", 0% packet loss" | wc -l) > 0 ]] ; then echo "Ok"; else echo -e "${ROJO}Fallo${NORMAL}" ; fi; done

donde:

  1. Lo he puesto queriendo en una única línea por comodidad.
  2. El for in {…} es de pruebas, sírvete utilizar un fichero de texto con una línea por equipo que quieras revisar.
  3. El parámetro -n es para que el comando echo no añada un retorno de línea y aparezcan juntos tanto la dirección IP como su “estado”
  4. El parámetro -e es para que echo interprete los códigos ANSI y poder utilizar el color rojo para destacar las IPs fuera de “combate”

CONCLUSIÓN

Sencillo script que me permite conocer rápidamente qué dispositivos de red han dejado de funcionar en la red del instituto en el que trabajo.

Si os parece interesante (y si no, se agradece la crítica constructiva porque igualmente me ayudará a mejorarlo) no dudes en plantear cualquier idea que se te pueda ocurrir (a mi, por ejemplo, conforme escribo ésto, se me está ocurriendo que estaría bien indicar en el fichero de las IPs, el nombre del dispositivo para poder localizarlo sin tener que mirar la “chuleta” que tengo en el tablón de corcho 😉 )

6 comentarios en “Detectar equipos fuera de combate [Script]

    • La verdad es que no (gracias)

      Podría utilizarlo como una forma de optimizar el proceso pero al ser pocos los equipos que debo “vigilar” no termina de merecerme la pena incluirlo (con otro volumen sería muy recomendable hacer uso de fping) pues pierdo la “compatibilidad” (fping no se encuentra instalado por defecto en los equipos del instituto y, desgraciadamente, tampoco tengo permisos de administración en ellos)

      Dejo anotada la referencia para cuando me “crezca” la “granja de enanos” que deban ser vigilados 😉

      Gracias compi tanto por comentar como por enseñarme esta herramienta.

  1. Julio dijo:

    Yo uso algo muy parecido, dejo un script en una máquina y lo dejo ejecutando cada 10 minutos por ejemplo. Me apoyo en el programa sendemail que me permite enviar correos electrónicos.

    El programa dice así, hay que cambiar las direcciones ip de la máquinas a observar y los datos para conectar con el servidor de correo.

    Obviamente se puede cambiar para asociar correo electrónico de aviso con la máquina a ser investigada.

    Esto funcionará si eres un adicto al correo electrónico.

    #!/bin/bash
    HOSTS=”192.168.110.51 192.168.158.52 [nombre accesible desde donde se ejecuta]”

    COUNT=4
    ## Variables para correo
    SMTP_SERVER=[IP o servidor de correo]
    REMITENTE=[usuario-servidor-correo@midominio.com]
    DESTINATARIO=[destinatario@sudominio.com]
    USUARIO=[usuario-servidor-de-correo]
    PASSWORD=[contraseña-servidor-correo]

    Asunto=””
    for myHost in $HOSTS
    do
    count=$(ping -c $COUNT $myHost | grep ‘received’ | awk -F’,’ ‘{ print $2 }’ | awk ‘{ print $1 }’)
    echo “Probando la conectividad de “$myHost
    if [ $count -eq 0 ]; then
    # 100% failed
    Asunto=”Máquina : $myHost está caído (comando ping falló desde $HOSTNAME) a las $(date)”
    echo $Asunto
    sendEmail -f $REMITENTE -t $DESTINATARIO -s $SMTP_SERVER -xu $USUARIO -xp $PASSWORD -o message-charset=utf-8 -u “$Asunto” -m “Revisa este host que parece que no está operativo\nJulio.”
    fi
    done

    El tuyo desde luego es mucho más sencillo.

    • Son prácticamente iguales (salvo que yo no puedo utilizar SMTP por “exigencias del guión”)

      Tengo otro script que se ejecuta en una máquina a la que llamo “Enigma” (jojojo), que cuando falla la conexión con alguno de los equipos, lo anota en un fichero y al final me lo manda por correo.

      Gracias por compartir código y experiencia Julio

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s