import socket
def is_valid_ipv4_address(address):
try:
socket.inet_pton(socket.AF_INET, address)
except AttributeError: # no inet_pton here, sorry
try:
socket.inet_pton()
except socket.error:
return False
return address.count('.') == 3
except socket.error: # not a valid address
return False
return True
def is_valid_ipv6_address(address):
try:
socket.inet_pton(socket.AF_INET6, address)
except AttributeError: # no inet_pton here, sorry
try:
socket.inet_pton()
except socket.error:
return False
return address.count('.') == 3
except socket.error: # not a valid address
return False
return True
def checkStatus():
websiteToCheck = input("Enter IP: ").replace(" ", "")
if is_valid_ipv4_address(websiteToCheck) or is_valid_ipv6_address(websiteToCheck):
print("Valid")
elif len(websiteToCheck) == 0:
print("Please input something")
else:
print("Invalid")
checkStatus()
Это дает ожидаемый результат, если это не действует, например, когда число превышает 255, когда входной содержит буквы алфавита и т. д. Однако допустим, что я вводил 10.111.111.111 в качестве своего IP. Он печатает «Valid», хотя, если вы попытаетесь получить доступ к этому IP прямо сейчас, вы потерпите неудачу.Мой IP шашка проверка, если IP технически действительно, я хочу, чтобы проверить, если это онлайн
Как проверить, включен ли IP-адрес, а не является ли он действительным?
Define «онлайн». Нужно ли предлагать общедоступный сервер/порт, чтобы считать «онлайн» ...? Если да, то какой? – deceze
@deceze Лицо, выполняющее программу, должно иметь возможность ввести этот IP-адрес в свой браузер и иметь что-то другое, кроме загрузки 404. –
404 уже указывает на работающий HTTP-сервер, который очень «онлайн». Итак, вы ожидаете, что IP-сервер будет запускать HTTP-сервер? Или HTTP-сервер, который будет обслуживать ответ 2xx? – deceze