通过手动Python查找IP是否存在于CIDR IP范围内

时间:2015-02-06 02:36:34

标签: python ip cidr

我有一个带有CIDR表示法的IP列表,例如:

10.10.1.32/27

我想要做的是检查IP是否属于该范围。所以我希望能够看到10.10.1.44是否落在那里,或者10.10.1.90不会落在那里。

我知道目前有很多python库,如ipcalc和netaddr。

但我不想亲手做到这一点。我知道我需要将IP转换为二进制,并根据它进行一些计算。我觉得我非常接近,但我不是百分之百地使用Python中的按位操作

我在这里找到一个为C做这个,但我不知道如何在没有使用库的情况下在Python中做到这一点。

谢谢!

2 个答案:

答案 0 :(得分:0)

我认为您可以轻松修改脚本here。它将为您提供网络和广播地址,例如N1.N2.N3.N4和B1.B2.B3.B4。然后,您只需检查您测试A1.A2.A3.A4的地址是否在两者之内

if N1 <= A1 <= B1 and .... and N4 <= A4 <= B4:
    return True
return False

答案 1 :(得分:0)

我认为netaddr包有你需要的东西。我实际上正在使用这个库进行所有IP计算。

https://pypi.python.org/pypi/netaddr