我需要比较两个不同的IP子网,并显示完全匹配,部分匹配或不匹配的结果。
我需要使用Python。
可以将IP划分为列表,但是当涉及子网时,它将变得很棘手。 例如:
我需要比较a和b,其中a = 10.10.1.2/25和b = 10.10.1.6/24,并显示结果。我是python的新手,不确定如何实现此任务。
答案 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地址分解为子字符串,==
条语句进行比较,并if
,elif
以继续。希望这对您有所帮助。 :)
答案 2 :(得分:0)
使用Python 3 ipaddress库。我猜您需要检查a
和b
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