给定一个ip地址(比如192.168.0.1),如何用Python检查它是否在网络中(比如192.168.0.0/24)
Python中是否有用于ip地址操作的通用工具?像主机查找、ip地址到int、网络地址和网络掩码到int等等?希望是在2.5版的标准Python库中
使用ipaddress(从3.3开始在stdlib中,在PyPi中为2.6/2.7):
>&燃气轮机&燃气轮机;导入IP地址
&燃气轮机&燃气轮机&燃气轮机;ipaddress.ip_网络('192.168.0.0/24')中的ipaddress.ip_地址('192.168.0.1'))
符合事实的
如果您想以这种方式评估一批IP地址,您可能需要预先计算网络掩码,如
n=ipaddress.ip\u网络('192.0.0.0/16')
netw=int(n.网络地址)
掩码=int(n.netmask)
然后,对于每个地址,使用以下方法之一计算二进制表示形式:
a=int(ipaddress.ip\u地址('192.0.43.10'))
a=结构解包(“!I”,socket.inet\u pton(socket.AF\u inet,'192.0.43.10'))[0]
a=结构解包(“!I',socket.inet_aton('192.0.43.10'))[0]#仅限IPv4
最后,您可以简单地检查:
在网络中=(a&;mask)=网络