Testeo automático de conectividad en bash
He creado el script de más abajo para comprobar la conectividad de varios servidores, siempre que haya una desconexión total entre cliente y servidor, es decir, si lo que ha caído es un host virtual y el dispositivo donde está el mismo sigue con funciones de red, se considiera que hay conectividad. En mi caso, tengo ejecutándose en el mismo servidor donde alojo el blog y estoy pensando en instalarlo en la Raspi que tengo en casa haciendo otras funciones de networking.
El script envía un ping a los hosts que indiquemos en un archivo de texto. Si algun host no devuelve el ping, el script ejecuta el comando mail para enviar un email a los destinatarios para que realicen una comprobación manual. Si la máquina servidor tiene conectividad, no envia ningún email.
El script:
#!/bin/bash ## Dependencias: mailutils ## Debe estar instado algun servidor smtp como exim o ssmtp SERVERFILE=/path/to/hosts #lista de hosts para comprobobar conectividad. Debe ser un path absoluto para cron. MESSAGE=message.txt if [ -f hostsnook ]; then rm hostsnook fi for S in $(cat $SERVERFILE); do ping -c4 -w5 $S > /dev/null 2> /dev/null || echo $S >> hostsnook done if [ -f hostsnook ]; then echo "Posible desconexión de los siguientes hosts:" > $MESSAGE echo "" >> $MESSAGE awk '{print "//"$n}' hostsnook >> $MESSAGE echo "" >> $MESSAGE echo "Pincha los enlaces para comprobación manual de conectividad" >> $MESSAGE /usr/bin/mail -s "Aviso de desconexion en host" user@buzon.com usuario@buzon.com < $MESSAGE fi
EL archivo /path/to/hosts tiene un formato como este:
laenredadera.net google.com sdafsdafdsafasdfasdfasdf.com python.org nmokoijkj.com
En caso de que algún servidor haya caído completamente, el script debería enviar un email con el siguiente mensaje:
Posible desconexión de los siguientes hosts: //sdafsdafdsafasdfasdfasdf.com //nmokoijkj.com Pincha los enlaces para comprobación manual de conectividad
Por últmo, para ejecutar el script de manera periódica, hay que añadirlo a cron:
*/30 * * * * mail bash /path/to/testServers.sh
El script de la ruta será ejecutado por el usuario mail cada treina minutos.
Este script no avisará de fallo en algunos casos, como que el host a comprobar tenga una IP compartida con servidores virtuales, o dará un falsto positivo por algún problema con la resolución de nombres de dominio.
Espero que haya sido útil.
Este post forma parte de la serie
verdaderamente me sivio mucho para un trabajito.
Lo unico me encantaria saber como hacer para que el mail lo envie el thunderbird.
Desde ya muchas gracias!