[TIP] Reiniciar Linux automáticamente si pierde conexión

Watchdog, el perro guardián fachero.

Necesitaba reiniciar una PC en caso de que esta perdiera conectividad, lo que se conoce como «watchdog» – (perro guardián), así que a falta de conocimientos de programación, google de por medio, encontré este escript que transcribo mas abajo, ligeramente adaptado para que cumpla con esta función, ya que el original en realidad envíaba un email avisando del incidente:

#!/bin/sh
### Comprobar conectividad cada 60 segundos
while sleep 60
do
for ip in 192.168.1.100 192.168.1.102 192.168.0.7
do
if ping -c 1 -t 2 $ip >/dev/null
then
echo «$ip da OK»
else
echo «$ip perdió un paquete»
## Esperar 10 segundos y probar de nuevo
sleep 10
if ! ping -c 1 -t 2 $ip >/dev/null
then
echo «$ip perdió dos paquetes, reiniciando…»
reboot
fi
fi
done
done 2>&1
Lo he  guardado como /usr/bin/watchdog y lo he convertido en ejecutable con el comando:
chmod +x /usr/bin/watchdog
Funciona a la perfección. Se podría adaptar para cualquier otro uso, por ejemplo, que en lugar de reiniciar la PC reinicie la conexión de red únicamente, o que registre las desconexiones, etc, etc.
Me lo dejo de ayuda memoria y se los dejo por si le viene bien a alguien.

7 comentarios

  1. Te cuento que te leo en Alt-Tab y en maldido nerd, todos los articulos son muy buenos por lo tecnico y por la forma amena de narrar este es un excelente Tip desde hace rato busco algo similar, lo ideal es que generara una llamada a un celular para dar aviso. Como se haria?

    1. No sabría indicarte con exactitud por que nunca he intentado, sumado esto al hecho de que la situación varía de país en país dependiendo de la disponibilidad de tu proveedor de telefonía celular (Colombia, ¿No?) pero una búsqueda rápida en mi gestor de paquetes me tira todas estas posibilidades, que aparentemente son aplicaciones que justamente cumplen esa función: Enviar SMS desde LInux:

      ~ # eix sms
      * app-misc/pysmssend
      Available versions: 1.45 {qt4}
      Homepage: http://pysmssend.silverarrow.org/
      Description: Python Application for sending sms over multiple ISPs

      * app-mobilephone/esms
      Available versions: 0.9.5
      Homepage: http://esms.sourceforge.net
      Description: A small console program to send SMS messages to Spanish cellular phones

      * app-mobilephone/galicesms
      Available versions: ~1.62
      Homepage: http://www.marzocca.net/linux/galicesms.html
      Description: GTK2 GUI interface for sending SMS messages via Rosso Alice (Italian ADSL service)

      * app-mobilephone/linuxsms
      Available versions: 0.77
      Homepage: http://linuxsms.sourceforge.net/
      Description: A console perl script for sending SMS to cell phones

      * app-mobilephone/pysms
      Available versions: ~0.9.4!t
      Homepage: http://pysms.sourceforge.net/
      Description: Tool for sending text messages for various Swiss providers

      * app-mobilephone/sms
      Available versions: 2.0.3 ~2.1.0
      Homepage: http://ceti.pl/~miki/komputery/sms.html
      Description: Command line program for sending SMS to Polish GSM mobile phone users

      * app-mobilephone/smsclient
      Available versions: ~2.0.9a-r1
      Homepage: http://www.smsclient.org
      Description: Utility to send SMS messages to mobile phones and pagers.

      * app-mobilephone/smssend
      Available versions: 3.4
      Homepage: None available
      Description: Universal SMS sender

      * app-mobilephone/smstools
      Available versions: ~2.2.20 {stats}
      Homepage: http://smstools.meinemullemaus.de/
      Description: Send and receive short messages through GSM modems

      A ver si te sirve al menos como la punta del ovillo. Algún día voy a hacer algunos experimentos al respecto, postearé los resultados. Gracias, me alegra que encuentres de utilidad deste blog.

      ¡Saludos!

      1. Si vivo en Colombia con decirte que tengo tu pagina en mis paginas de predileccion y de mis clientes, http://www.tallernet.com en unos dias tambien pondre maldito nerd.
        Tomando el tema de la llamada no es necesaario enviar un sms solo con recibir una llamada y ver el numero del Celular ayuda. Te digo esto porque no estudie nada de Computadores todo es empirico e investigando he hecho una red inahalambrica y vendo internet a los vecinos y visitantes de Cartagena, tengo servidor linux y para el hotspot uso MONOWALL.

        Saludos

        1. En ese caso la cosa se simplifica bastante. Con que le pongas un viejo modem (que seguramente alguno tendrás tirado por ahí) a esa PC y le des soporte para el mismo al kernel.

          Hacer que el modem disque el número de teléfono 112233445566 por ejemplo, es tan simple como ejecutar en una consola:

          echo «ATDT112233445566» > /dev/ttySX

          Dónde X es el número de puerto serial al que estuviera asociado.

          Reemplaza en donde dice «reboot» en el script de mas arriba por este otro comando y tu modem te llamará por teléfono para avisarte de que tiene algún inconveniente.

          ¡Saludos!

          1. Ante todo te agradezco de nuevo por el script, en proximas horas estara en funcionamiento, hice algunos pequeños cambios y quedo asi:

            #!/bin/sh
            ### Comprobar conectividad cada 5 minutos
            while sleep 1
            do
            for ip in 192.168.200.1 192.168.200.11
            do
            if ping -c 1 -t 3 $ip >/dev/null
            then
            echo «$ip Ping da OK»
            else
            echo «$ip Perdió un paquete»
            ## Esperar 10 segundos y probar de nuevo
            sleep 20
            if ! ping -c 1 -t 3 $ip >/dev/null
            then
            echo «$ip perdio dos paquetes, LLAMANDO»
            echo «ATDW,,033162512327» > /dev/ttySx
            exit
            fi
            fi
            done
            done 2>&1

            Lo unico que modifique fue cambiar el

            echo “ATDT,,033162512327″ > /dev/ttySX

            por

            echo «ATDW,,033162512327» > /dev/ttySx

            se cambio la «T» por la «W» esto hace que el fax llame y suene 3 veces y cuelgue, por que anteriormente sucedia que si yo no contestaba lo hacia el contestador del celular generando una llamada, lo cual por lo menos aqui en Colombia son llamadas costosisimas.

            Y anexe un exit que termina el script y lo puse en que lo ejecute un cron, como el servidor tiene dos tarjetas WAN y LAN hice dos cron que se ejecutan en dos momentos diferentes el que prueba la WAN empieza y en las horas terminadas en 0 Ej.:10:10 y la que prueba la LAN se ejecuta en horas terminadas en 5 Ej.: 10:55.

            Gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *