it-swarm.dev

¿Cómo puedo hacer que Empathy vuelva a intentar conectarse cuando tiene un problema de red?

He agregado Empathy a la lista de aplicaciones que se abren de forma predeterminada, y está configurado para conectarse automáticamente a MSN cuando se inicia, pero cuando inicio sesión en mi computadora portátil, la conexión wifi tarda unos segundos en estar lista. Antes de que la red esté activa, Empathy ya comenzó, intentó iniciar sesión en MSN y falló, y no puedo conectarlo después de eso.

Esto parece ser un error en Empathy, pero ¿cómo puedo solucionarlo o, si no es posible, cómo puedo retrasar su inicio hasta que la red esté activa?

9
Ricardo Reyes

Aparentemente, este es un error conocido en Empathy, así que decidí lanzar Empathy desde un script que verifica si la red está activa (conectándose a http://www.google.com , el verdadero latido de Internet :) Si la red no funciona, dormirá durante 5 segundos y volverá a intentarlo, hasta que lo haya intentado 30 veces.

Este es el script (llamado waitfornet.py )

#!/usr/bin/python

from urllib2 import urlopen, URLError
from subprocess import Popen
from time import sleep
from sys import argv

MAX_TRIES = 30
DELAY = 5

if len (argv) < 2:
    print ('Check for network connectivity and run a command once the net is up')
    print ('Tries up to %d times waiting %d seconds between each try' % (MAX_TRIES, DELAY))
    print ('\nUSAGE: python waitfornet.py <command to run>')
else:
    while True:
        MAX_TRIES -= 1
        if MAX_TRIES < 0:
            raise ValueError ('Reached the max iteration count and the net is still down')

        try:
            data = urlopen('http://www.google.com')
        except URLError:
            # if there's a problem connecting to google, that must mean
            # that the net is still down, so sleep 5 seconds and try again
            print ('Internet is down... retrying...')
            sleep (DELAY)
            continue

        # if you got here it means that the urlopen succeded
        pid = Popen([argv[1], ' '.join(argv[1:])]).pid
        break

y así es como lo ejecuto desde el menú "Aplicaciones de inicio":

~/scripts/waitfornet.py empathy
6
Ricardo Reyes

Parece que Empathy puede necesitar un parche para hacer este tipo de cosas internamente. Pero debería poder empujar Empathy para hacer lo correcto al desconectarse de su red y volver a conectarse.

Aparentemente he tenido errores con Empathy rechazando la conexión a un montón de redes en varias ocasiones. Pero debería dar una cuenta atrás "Volverá a intentarlo en X segundos".

Pero eso tomará código y, si lo desea, se debe hacer un informe de error.

Escribí n script específicamente para superar este problema . Este script (que se basa en python y D-Bus) conectará la empatía a la red cada vez que la red esté en línea. Incluso si la conexión se cae y se vuelve a conectar, el script volverá a conectar automáticamente la empatía.

Espero que lo disfrutes. Por favor, deje un comentario si necesita alguna mejora.

1