我已将Empathy添加到默认打开的应用程序列表中,并且将其配置为在启动时自动连接到MSN,但是当我登录笔记本电脑时,WiFi连接需要几秒钟的准备时间。在网络启动之前,Empathy已经启动,尝试登录到MSN并失败了,此后我无法使其连接。
这似乎是“移情”中的一个错误,但是我如何才能解决它,或者,如果不可能,如何才能将其启动推迟到网络启动为止?
我已将Empathy添加到默认打开的应用程序列表中,并且将其配置为在启动时自动连接到MSN,但是当我登录笔记本电脑时,WiFi连接需要几秒钟的准备时间。在网络启动之前,Empathy已经启动,尝试登录到MSN并失败了,此后我无法使其连接。
这似乎是“移情”中的一个错误,但是我如何才能解决它,或者,如果不可能,如何才能将其启动推迟到网络启动为止?
Answers:
显然,这是Empathy中的一个已知错误,因此我决定从一个脚本启动Empathy,该脚本检查网络是否正常运行(连接到http://www.google.com,这是Internet真正的心跳:)如果网络无法正常工作,它将休眠5秒钟,然后重试,直到尝试30次
这是脚本(名为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
这就是我从“启动应用程序”菜单启动它的方式:
~/scripts/waitfornet.py empathy
听起来同情心可能需要补丁才能在内部完成此类操作。但是您应该能够通过断开网络连接并重新连接来戳取“共情”来做正确的事情。
我似乎在Empathy中遇到了一些错误,它们在不同的时间拒绝连接到一堆网络。但是它应该倒计时“将在X秒内重试”。
但这将需要代码,并且如果需要的话,还需要编写一个错误报告。
我专门编写了一个脚本来克服此问题。每当网络在线时,此脚本(基于python和D-Bus)都会将同理连接到网络。即使连接断开并重新连接,脚本也会再次自动重新连接移情。
希望您会喜欢。如果您需要任何改进,请发表评论。