Por razones que no vienen al caso, me toco trabajar un par de semanas desde un lugar geográficamente remoto y donde la calidad de la conexión a internet deja mucho que desear, sobre todo en los días de viento, la conexión se corta, sin exagerar cada 20 o 30 segundos, el roaming internacional funcionaba tan mal como el wifi y al ser extranjero no podía activar un plan movil prepago así que hasta solucionar eso, me toco encontrar una solución a la intermitencia de la conectividad.
Normalmente, vuelve rápido, sin embargo, algunas veces demora y si bien no a pasado aún, bien puede ser permanente y hasta que no necesite algo de internet, no enterarme del corte perdiendo las notificaciones importantes que debo atender, sobre todo en la noche estando de guardia, así que me toco crear un script para detectar las caídas y avisar, a continuación el código:
#!/bin/python3 import requests import gi gi.require_version('Notify', '0.7') import time from gi.repository import Notify from playsound import playsound import os def notification(text,sound=False): #Notifiction Notify.init ("ALERTA") dialog=Notify.Notification.new ("ALERTA",text,"dialog-information") #dialog.set_timeout(0) dialog.show() #Sound if sound==True: playsound('./alarma.wav') attempt=30 interval=5 count = 0 try: while(True): try: now = time.strftime("%Y-%m-%d %H:%M:%S") x = requests.get('https://check.server.com.uy/',timeout=5) if (x.text!="OK"): count += 1 print("{} Fallo intentando conectar con https://check.server.com.uy/ ({})".format(now,count)) else: if (count>0): x = requests.get("https://check.server.com.uy/myip.php",timeout=5) count = 0 notification("La conexion fue restaurada") print("{} La conexion fue restaurada (Public IP {})".format(now,x.text)) except: count += 1 print("{} Fallo intentando conectar con https://check.server.com.uy/ ({})".format(now,count)) if count > attempt: notification("{} Despertate paparulo que estas sin internet".format(now),sound=True) time.sleep(interval) except Exception as e: notification("Despertate, que este script no funciona")
Se puede modificar la ruta de playsound para asignar un sonido distintivo a la notificación, además el script necesitará instalar las liberias requests, playsound y gi, nada del otro mundo, al ejecutarlo:
./internetstatus
La salida será algo similar a esto:
2022-12-31 14:49:02 Fallo intentando conectar con https://check.server.com.uy/ (1) 2022-12-31 14:49:07 Fallo intentando conectar con https://check.server.com.uy/ (2) 2022-12-31 14:49:12 Fallo intentando conectar con https://check.server.com.uy/ (3) 2022-12-31 14:49:17 Fallo intentando conectar con https://check.server.com.uy/ (4) 2022-12-31 14:49:22 Fallo intentando conectar con https://check.server.com.uy/ (5) 2022-12-31 14:49:27 La conexion fue restaurada (Public IP XXX.XXX.XXX.XXX) 2022-12-31 14:50:34 Fallo intentando conectar con https://check.server.com.uy/ (1) 2022-12-31 14:50:44 Fallo intentando conectar con https://check.server.com.uy/ (2) 2022-12-31 14:50:50 Fallo intentando conectar con https://check.server.com.uy/ (3) 2022-12-31 14:50:55 Fallo intentando conectar con https://check.server.com.uy/ (4) 2022-12-31 14:51:00 Fallo intentando conectar con https://check.server.com.uy/ (5) 2022-12-31 14:51:05 Fallo intentando conectar con https://check.server.com.uy/ (6) 2022-12-31 14:51:10 Fallo intentando conectar con https://check.server.com.uy/ (7) 2022-12-31 14:51:15 La conexion fue restaurada (Public IP XXX.XXX.XXX.XXX) 2022-12-31 14:51:45 Fallo intentando conectar con https://check.server.com.uy/ (1) 2022-12-31 14:51:55 Fallo intentando conectar con https://check.server.com.uy/ (2) 2022-12-31 14:52:05 Fallo intentando conectar con https://check.server.com.uy/ (3) 2022-12-31 14:52:15 Fallo intentando conectar con https://check.server.com.uy/ (4) 2022-12-31 14:52:25 La conexión fue restaurada (Public IP XXX.XXX.XXX.XXX) 2022-12-31 14:52:51 Fallo intentando conectar con https://check.server.com.uy/ (1) 2022-12-31 14:53:01 La conexión fue restaurada (Public IP XXX.XXX.XXX.XXX)
No es una solución perfecta, aunque me resulto de gran ayuda para saber cuando me quedo sin internet, especialmente durante la noche de guardia, espero que los saque de un apuro como a mi.
Administrador de Sistemas, Programador, Docente y ahora resulta que también Blogger (peor es ser tictoker). Más de 20 años de experiencia en computación atendiendo nabos y resolviendo problemas, los cuales si no fuera por estos nabos, no habrían ocurrido en primer lugar. Escribo más que nada sobre tecnología y herramientas en general, además de algunos artículos con opiniones tan subjetivas como irrelevantes, así que si no te gustan, mejor madura y superalo.