Làm cách nào tôi có thể khiến Empathy thử lại kết nối khi gặp sự cố mạng


9

Tôi đã thêm Empathy vào danh sách các ứng dụng mở theo mặc định và được cấu hình để tự động kết nối với MSN khi bắt đầu, nhưng khi tôi đăng nhập vào máy tính xách tay của mình, kết nối wifi mất vài giây để sẵn sàng. Trước khi mạng kết thúc, Empathy đã bắt đầu, đã thử đăng nhập vào MSN và không thành công và tôi không thể kết nối nó sau đó.

Đây có vẻ là một lỗi trong Empathy, nhưng làm thế nào tôi có thể sửa lỗi cho nó, hoặc nếu không thể, làm thế nào tôi có thể trì hoãn bắt đầu cho đến khi mạng kết thúc?

Câu trả lời:


6

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

2

Có vẻ như Empathy có thể cần một bản vá để thực hiện loại điều này trong nội bộ. Nhưng bạn sẽ có thể chọc Empathy để làm điều đúng bằng cách ngắt kết nối khỏi mạng của bạn và kết nối lại.

Tôi dường như có lỗi với Empathy từ chối kết nối với một loạt các mạng vào nhiều thời điểm. Nhưng nó sẽ đưa ra một đếm ngược "Sẽ thử lại sau X giây."

Nhưng điều đó sẽ lấy mã và nếu bạn muốn nó, một báo cáo lỗi cần phải được thực hiện.


1

Tôi đã viết một kịch bản đặc biệt để khắc phục vấn đề này . Kịch bản này (dựa trên python và D-Bus) sẽ kết nối sự đồng cảm với mạng mỗi khi mạng trực tuyến. Ngay cả khi kết nối bị hỏng và kết nối lại, tập lệnh sẽ tự động kết nối lại sự đồng cảm một lần nữa.

Hy vọng bạn sẽ thích nó. Vui lòng để lại một bình luận nếu bạn cần bất kỳ cải tiến.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.