Jak zmusić Empathy do ponownej próby połączenia, gdy wystąpi problem z siecią

9

Dodałem Empathy do listy aplikacji, które domyślnie się otwierają, i jest skonfigurowany do automatycznego łączenia się z MSN po uruchomieniu, ale kiedy loguję się do laptopa, połączenie Wi-Fi zajmuje kilka sekund, aby być gotowym. Zanim sieć się uruchomi, Empathy już się uruchomiło, próbowało zalogować się do MSN i nie udało się, a potem nie mogę się połączyć.

To wydaje się być błędem w Empathy, ale jak mogę go naprawić, a jeśli nie jest to możliwe, jak mogę opóźnić jego uruchomienie, dopóki sieć nie będzie działać?

Ricardo Reyes
źródło

Odpowiedzi:

6

Najwyraźniej jest to znany błąd w Empathy, więc zdecydowałem się uruchomić Empathy ze skryptu, który sprawdza, czy sieć działa (połączenie z http://www.google.com , prawdziwe bicie serca w Internecie :) Jeśli sieć nie działa, będzie spał przez 5 sekund i spróbuje ponownie, aż spróbuje 30 razy

To jest skrypt (o nazwie 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

i tak uruchamiam go z menu „Aplikacje startowe”:

~/scripts/waitfornet.py empathy
Ricardo Reyes
źródło
2

Wygląda na to, że Empathy może potrzebować łatki, aby zrobić coś takiego wewnętrznie. Ale powinieneś być w stanie szturchnąć Empathy, aby postępować właściwie, odłączając się od sieci i ponownie łącząc.

Najwyraźniej miałem problemy z Empathy odmawiającą połączenia z wieloma sieciami w różnych momentach. Ale powinno odliczać „Ponów próbę za X sekund”.

Ale to zajmie kod, a jeśli chcesz, musisz zgłosić błąd.

Martin Owens -doctormo-
źródło
1

Napisałem skrypt specjalnie w celu przezwyciężenia tego problemu . Ten skrypt (oparty na Pythonie i D-Bus) łączy empatię z siecią za każdym razem, gdy sieć jest w trybie online. Nawet jeśli połączenie zostanie zerwane i ponownie się połączy, skrypt automatycznie ponownie połączy empatię.

Mam nadzieję, że ci się spodoba. Zostaw komentarz, jeśli potrzebujesz ulepszeń.

Ishan Thilina Somasiri
źródło