it-swarm-vi.com

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

Tôi đã thêm Empathy vào danh sách các ứng dụng mở theo mặc định và nó đượ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?

9
Ricardo Reyes

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 kịch bản để 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 tên 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
6
Ricardo Reyes

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 có thể chọc đồng cảm để 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.

2

Tôi đã viết một kịch bản đặc biệt để khắc phục vấn đề này . Tập lệnh 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ị ngắt và kết nối lại, tập lệnh sẽ tự động kết nối lại đồng cảm lại.

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.

1