Python: Проверка пинга перед тем, как что-либо делать

#python #if-statement #connection #ping #check

#питон #если-заявление #соединение #свист #проверять

Вопрос:

В настоящее время я пытаюсь проверить, есть ли у меня подключение к Интернету, прежде чем что-то делать, но даже если я пропингую соединение, и оно не должно переходить в «Если», оно все еще работает.

 ipaddress = '8.8.8.8' ipaddress2 = '8.8.4.4' response = os.system("ping -c 1 "   ipaddress) response2 = os.system("ping -c 1 "   ipaddress2)  if response or response2 == 0:  do something  

Комментарии:

1. Какую операционную систему вы используете?

2. @Daveo Я использую Linux

3. Попробуйте запустить его в оболочке bash и посмотрите, что произойдет, если вы намеренно используете несуществующий IP-адрес. На macOS следующее вернет значение 2. ping-c 1 -t 1 88.8.8.8 gt;/dev/null; echo $?

4. Также стоит отметить, что ваш код не обязательно достигнет вашей цели. Указанные вами IP-адреса являются общедоступными DNS-серверами Google. Если по какой-то причине эти серверы были недоступны, это не указывает на то, есть ли у вас надежное подключение к Интернету или нет. Это просто означает, что вы не можете связаться с этими адресами. Возможно, вы сможете связаться с другими.

5. @JCaesar Я подключил Интернет с сервера, которым я пользуюсь. Я думаю, что это не должно переходить в «Если» тогда..

Ответ №1:

Я сам нашел эту Проблему.

В Python вы должны ставить Сравнение за каждой переменной.

Подобный этому:

 ipaddress = '8.8.8.8' ipaddress2 = '8.8.4.4' response = os.system("ping -c 1 "   ipaddress) response2 = os.system("ping -c 1 "   ipaddress2)  if response == 0 or response2 == 0:  do something  

Комментарии:

1. Это связано с тем, что os.system возвращает код выхода из системы этой команды. В Linux выход 0 означает, что команда успешно завершена