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