#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 означает, что команда успешно завершена