En este artículo presento un script Bash para verificar el estado de un enlace. Lo he desarrollado para detectar microcortes de red en uno de mis servidores y recolectar evidencia para efectuar un eventual reclamo con el proveedor del servicio.



La idea es ejecutar ping una vez por minuto contra un host determinado (en este ejemplo uso uno de los servidores DNS de Google o el sitio www.siteuptime.com). Para este escenario se necesita un script que haga ping, determine si el enlace funciona y genere una entrada en un archivo de log en caso de falla.

Script /scripts/net_uptime.sh.

#!/bin/bash

# host to ping
#TARGET="www.siteuptime.com"
TARGET="8.8.8.8"

# log file
LOG="/var/log/net-uptime.log"

# ping 3 packets every 2 seconds, wait 3 seconds maximum
PING=$(ping -n -c 3 -i 2 -W 3 $TARGET 2>&1)

if [[ $? != 0 ]]
then
    	if [[ $PING =~ "loss" ]]
        then
            	# no reply
                ERROR=$(echo "$PING" | grep 'loss')
        else
            	# destination unreachable
                ERROR=$PING
        fi
	echo "$(date +%F\ %T) - Failed check - $ERROR" &>> $LOG
fi

El script envía tres paquetes echo request en intervalos de 2 segundos. Si hay errores guarda una entrada en el archivo de log /var/log/net-uptime.log.

Para ejecutar el script una vez por minuto utilizo una tarea de cron:

# cat /etc/cron.d/net-uptime 
# Verificar conexión cada 1 minuto
*/1 * * * * root /scripts/net_uptime.sh

Luego de varios días en ejecución, el script fue capaz de detectar 2 microcortes, el primero de 1 minuto y el segundo de 8 minutos de duración, como se observa en el siguiente volcado:

# cat /var/log/net-uptime.log 
2013-03-17 18:02:08 - Failed check - 3 packets transmitted, 0 received, 100% packet loss, time 7000ms
2013-03-19 05:14:41 - Failed check - ping: unknown host www.siteuptime.com
2013-03-19 05:15:41 - Failed check - ping: unknown host www.siteuptime.com
2013-03-19 05:16:41 - Failed check - ping: unknown host www.siteuptime.com
2013-03-19 05:17:41 - Failed check - ping: unknown host www.siteuptime.com
2013-03-19 05:18:41 - Failed check - ping: unknown host www.siteuptime.com
2013-03-19 05:19:41 - Failed check - ping: unknown host www.siteuptime.com
2013-03-19 05:20:41 - Failed check - ping: unknown host www.siteuptime.com
2013-03-19 05:21:41 - Failed check - ping: unknown host www.siteuptime.com


Tal vez pueda interesarte


Compartí este artículo