首页 > > > 用Python判断CIDR重叠
最近在写代码的时候,有一个需求就是判断一个新增的CIDR是否与现有的CIDR重叠。
Python下比较经典的IP地址工具包。github。
import netaddr
new_cidr = "10.0.0.0/24"
old_cidr = "10.0.0.0/16"
def is_overlap(old, new):
old_net = netaddr.IPNetwork(old)
new_net = netaddr.IPNetwork(new)
return old_net in new_net or new_net in old_net
is_overlap(old_cidr, new_cidr)
>>> Trueipaddr是谷歌开源的一个项目,也是一个IP地址工具包。google/ipaddr-py
import ipaddr
new_cidr = "10.0.0.0/24"
old_cidr = "10.0.0.0/16"
new_net = ipaddr.IPNetwork(new_cidr)
old_net = ipaddr.IPNetwork(old_cidr)
new_net.overlaps(old_net)
>>> TrueCIDR的定义是以二进制划分的,因此不存在真正的相交或者重叠,只可能一个是另一个的子集。因此,这个问题的思路应该是判断两个CIDR,其中一个是不是包含了另一个。
在这个功能上两个工具包没有明显的优劣势。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3171055/ ,如需转载,请注明出处,否则将追究法律责任。