我正在尝试验证特定的 IP 地址,无论它是否存在于我定义的 ipaddress.IPV4Network 中。 例如,代码:
import ipaddress
ipv = '192.168.255.0'
ans = [str(ip1)in ipaddress.IPv4Network('192.168.0.0/16')]
if ipv in ans:
print('Present')
else:
print('Not Present')
返回
True
,因为 ipv='192.168.255.0'
在 ipaddress.IPv4Network('192.168.0.0/16')
的范围内
为
False
返回 ipv='192.255.255.0'
,因为它超出了范围。
我想对多个私有 IP 地址进行此检查,例如:
ans = [str(ip1, ip2, ip3) for ip1, ip2, ip3 in (ipaddress.IPv4Network('192.168.0.0/16'), ipaddress.IPv4Network('10.0.0.0/8'), ipaddress.IPV4Network('172.16.0.0/12'))]
这个结构是完全错误的,在Python中是不允许的。 有什么有效的方法可以实现这一点吗?
脚本
import ipaddress
ip_list = ['192.168.0.0', '192.168.0.12', '192.169.255.34']
ip_result = {ip: ipaddress.ip_address(ip) in
ipaddress.IPv4Network('192.168.0.0/16') for ip in ip_list}
print(ip_result)
输出
{'192.168.0.0': True, '192.168.0.12': True, '192.169.255.34': False}