Python IP 检查

0 投票
2 回答
748 浏览
提问于 2025-04-17 09:26

给定一个范围 xxx.xxx.xxx.(195-223),这样写成 xxx.xxx.xxx.196/29 是正确的吗?然后通过下面的方式检查一个IP是否在这个网络里。

from ipaddr import IP, CIDR 
#if IP('xxx.xxx.xxx.xxx') in IP('xxx.xxx.xxx.196/29') or
#if IP('xxx.xxx.xxx.xxx') in CIDR('xxx.xxx.xxx.196/29')

2 个回答

1

我没有使用过 ipaddr 模块,但我想告诉你,/29 代表你的网络掩码是 255.255.255.248。这意味着你只有最后 3 位可以用来给网络中的设备分配地址,也就是可以有 2^3 = 8 个不同的主机地址,范围是从 xxx.xxx.xxx.248 到 xxx.xxx.xxx.255。这些地址不在你想要检查的范围内。

想了解更多信息,可以看看这个 子网 的维基百科页面。

2

我在ipaddr里没看到IP,只有IPAddress。可能是这样吗?

from ipaddr import IPAdddress, IPNetwork

if IPAddress('10.0.0.195') in IPNetwork('10.0.0.196/29'):
    pass

撰写回答