import sys
import ipaddress
def check_ip_in_same_subnet(mask, ip1, ip2):
try:
# 验证子网掩码
netmask = ipaddress.IPv4Network(f"0.0.0.0/{mask}", strict=False)
# 验证第一个 IP 地址
ip_addr1 = ipaddress.IPv4Address(ip1)
# 验证第二个 IP 地址
ip_addr2 = ipaddress.IPv4Address(ip2)
# 计算第一个 IP 所在的子网
network1 = ipaddress.IPv4Network(
f"{ip_addr1}/{netmask.prefixlen}", strict=False
)
# 计算第二个 IP 所在的子网
network2 = ipaddress.IPv4Network(
f"{ip_addr2}/{netmask.prefixlen}", strict=False
)
# 判断两个 IP 是否在同一子网
if network1 == network2:
return 0
else:
return 2
except ValueError:
return 1
index = 0
nums = []
for line in sys.stdin:
a = line.split("\n")[0]
nums.append(a)
index+=1
if index == 3:
index = 0
#print(nums)
print(check_ip_in_same_subnet(nums[0],nums[1],nums[2]))
nums=[]
直接用ipaddress 判断ip是否合法,以及获取ip的子网

京公网安备 11010502036488号