Rõ ràng đây là một lỗi đã biết trong Empathy, vì vậy tôi đã quyết định khởi chạy Empathy từ một tập lệnh kiểm tra xem mạng có hoạt động không (kết nối với http://www.google.com , nhịp tim thật của internet :) Nếu mạng không hoạt động, Nó sẽ ngủ trong 5 giây và thử lại, cho đến khi thử 30 lần
Đây là tập lệnh (có tên là 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
và đây là cách tôi khởi chạy nó từ menu "Ứng dụng khởi động":
~/scripts/waitfornet.py empathy