如何用Python检查网络中是否存在ip?

给定一个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):

&gt&燃气轮机&燃气轮机;导入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)=网络

发表评论