如何比较两个IP地址并找出它们是完全匹配还是部分匹配,或者根本不匹配

时间:2018-12-28 13:10:37

标签: python

我需要比较两个不同的IP子网,并显示完全匹配,部分匹配或不匹配的结果。

我需要使用Python。

可以将IP划分为列表,但是当涉及子网时,它将变得很棘手。 例如:

我需要比较a和b,其中a = 10.10.1.2/25和b = 10.10.1.6/24,并显示结果。我是python的新手,不确定如何实现此任务。

3 个答案:

答案 0 :(得分:2)

您可以使用python的ipaddress模块​​(内置)

from  ipaddress import ip_interface
# since you have provided interface address
ip1 = ip_interface.ip_address('10.10.1.2/24')
ip2 = ip_interface.ip_address('10.10.1.6/24')
print(ip1 == ip2)
# answer would be False

答案 1 :(得分:0)

本着帮助您解决问题而不是提供解决方案的精神,请尝试使用

  • str.split()see description here)将IP地址分解为子字符串,
  • 然后用==条语句进行比较,并
  • ifelif以继续。

希望这对您有所帮助。 :)

答案 2 :(得分:0)

使用Python 3 ipaddress库。我猜您需要检查ab IP地址的网络是否重叠。

如果我们构造Interface Objects,则每个人都可以通过.network访问自己的网络属性。

from ipaddress import ip_interface
a = ip_interface('10.10.1.2/25')
b = ip_interface('10.10.1.6/24')

print(b.network.overlaps(a.network))

输出

Python 3.6.1 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
> True