当 Empathy 出现网络问题时,如何让它重试连接

当 Empathy 出现网络问题时,如何让它重试连接

我已将 Empathy 添加到默认打开的应用程序列表中,并将其配置为在启动时自动连接到 MSN,但当我登录笔记本电脑时,wifi 连接需要几秒钟才能准备好。在网络启动之前,Empathy 已经启动,尝试登录 MSN 并失败,之后我无法让它连接。

这似乎是 Empathy 中的一个错误,但我该如何修复它呢?如果不可能的话,我该如何延迟它的启动直到网络启动?

答案1

显然这是 Empathy 中的一个已知错误,因此我决定通过一个脚本来启动 Empathy,该脚本会检查网络是否已启动(连接到http://www.google.com,互联网真正的心跳:)如果网络不工作,它会休眠5秒并重试,直到尝试30次

这是脚本(名为等待网络

#!/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

答案2

听起来 Empathy 可能需要一个补丁才能在内部执行此类操作。但您应该能够通过断开网络连接并重新连接来促使 Empathy 执行正确的操作。

我似乎遇到过 Empathy 在不同时间拒绝连接大量网络的错误。但它应该给出倒计时“将在 X 秒后重试”。

但这需要代码,如果您想要它,则需要进行错误报告。

答案3

我写专门用于解决这个问题的脚本此脚本(基于python和D-Bus实现)每次网络在线时都会将empathy连接到网络,即使连接断了重新连接,脚本也会自动再次将empathy重新连接。

希望你会喜欢它。如果您需要任何改进,请发表评论。

相关内容