Ошибка пинга Python3...
Я пытаюсь пинговать адрес с помощью Raspberry PI 3B, попробовал пинговать 192.168.0.1 из командной строки, которая, казалось, отвечала. Теперь мне нужно быстрее приступить к работе, поэтому я попробовал нижеприведенный Python (я далеко не эксперт), чтобы он не работал (сюрприз!) Я попытался заставить его работать, добавив "w", чтобы открыть файл подсчета ошибок, если он не существует, создавая ErrorCount.вход в систему на рабочем столе приводит к тому, что сценарий хромает, а не запускается... Так что же, я создаю текстовый файл неправильно или чахну (или чихаю) неправильно?
Что я уже пробовал:
import socket max_error_count = 10 error_count = 1 def increase_error_count(): # Quick hack to handle false Port not open errors with open('ErrorCount.log') as f: for line in f: error_count = line error_count = int(error_count) print ("Error counter: " + str(error_count)) file = open('ErrorCount.log', 'w') file.write(str(error_count + 1)) file.close() if error_count == max_error_count: # Send email, pushover, slack or do any other fancy stuff print ("Sending out notification") # Reset error counter so it won't flood you with notifications file = open('ErrorCount.log', 'w') file.write('0') file.close() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(2) result = sock.connect_ex(('192.168.0.1',80)) if result == 0: print ("Port is open") else: print ("Port is not open") increase_error_count()
Richard MacCutchan
Это не пинг. Вы пытаетесь подключиться к HTTP-серверу на какой-то локальной машине. Если сервер не прослушивает этот порт, то соединение завершится неудачно.
glennPattonInThePubAgain!
А-а, хорошая мысль... Так что я использую неправильную команду
Jochen Arndt
Я тоже не специалист по Питону.
Вы вообще не пингуете. Вы пытаетесь подключиться к порту 80, который обычно является HTTP-сервером, который терпит неудачу, если такая служба не запущена. Затем вы можете распечатать результирующее значение, чтобы узнать, почему. Если это удастся, вы должны закрыть гнездо.
Если вам нужен реальный (ICMP) пинг, см., например GitHub - samuel/python-ping: чистая версия Python ICMP ping.
glennPattonInThePubAgain!
Я действительно внедренный парень, но иногда мне приходится играть с вещами более высокого уровня
вот тут - то и начинаются неприятности...
Jochen Arndt
Для разработчика приложений сокеты относятся к API самого низкого уровня.
Но я понимаю, что вы имеете в виду, используя встроенную систему и микроконтроллеры тоже.