如何在Python中检查IP地址(比如192.168.0.1)是否属于某个网络(比如192.168.0.0/24)?
在Python中是否有一些常规工具用于IP地址的操作,例如主机查找、将IP地址转换为整数、将带有子网掩码的网络地址转换成整数等等?希望这些工具能够在Python 2.5标准库中找到。
如何在Python中检查IP地址(比如192.168.0.1)是否属于某个网络(比如192.168.0.0/24)?
在Python中是否有一些常规工具用于IP地址的操作,例如主机查找、将IP地址转换为整数、将带有子网掩码的网络地址转换成整数等等?希望这些工具能够在Python 2.5标准库中找到。
IPy
库。def is_ip_in_prefix(ip, *prefixes):
prefixes_ipset = IPy.IPSet([IPy.IP(item) for item in prefixes])
try:
ip_ipset = IPy.IP(ip)
return (
ip_ipset in prefixes_ipset
or
# If the IP is IPv4/IPv6 and prefix is IPv6/IPv4 addresses, we need to convert it to a compatible
# format.
# >>> IP('192.168.1.1').v46map()
# IP('::ffff:192.168.1.1')
# >>> IP('::ffff:192.168.1.1').v46map()
# IP('192.168.1.1')
ip_ipset.v46map() in prefixes_ipset
)
except ValueError:
return False