Создание простой интернет-проверки - PullRequest
0 голосов
/ 21 октября 2018

У меня возникла проблема с интернет-провайдером, из-за которой у меня несколько минут зависал интернет, а затем снова включался.Когда я позвонил им, они сказали, что контролируют только капли длиной 30 минут или дольше.Они также сказали, что ничего не будут обслуживать, если у компьютера нет этих проблем и он напрямую не подключен к их модему.

У меня есть ноутбук, который я подключил к их модему напрямую.И остальная часть моей сети проходит через мой маршрутизатор.Я хочу, чтобы каждый компьютер отслеживал свое подключение к Интернету и уведомлял меня, когда он отключался в режиме реального времени.

Я написал скрипт на python, который может это сделать, но проблема в том, что даже если я использую свойство timeout,когда интернет выходит из строя (проверяя это путем принудительного отключения), а не отвечает, что в течение нескольких секунд ответ не был получен, он ждет около 30 секунд, прежде чем объявить, и время повсеместно.

В настоящее время я делаю что-то вроде этого:

import socket

MESSAGE = bytes("!", "utf-8")
UDP_PORT = 443

def ping(udp_ip):
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.settimeout(2)
    sock.sendto(MESSAGE, (udp_ip, UDP_PORT))

try:    
    ping("google.com")
    time.sleep(3)
except socket.gaierror:
    alert()
    time.sleep(3)
...