Python 检查子网冲突
我正在编写一个脚本,该脚本获取a/16并将其分解为不同的子网(/24、23、27等)。我意识到我可能会遇到冲突的子网,我正在寻找一种方法来检查这一点。我在ipcalc或NetAddress中没有找到任何专门解决此问题的内容。谢谢你的帮助Python 检查子网冲突,python,networking,Python,Networking,我正在编写一个脚本,该脚本获取a/16并将其分解为不同的子网(/24、23、27等)。我意识到我可能会遇到冲突的子网,我正在寻找一种方法来检查这一点。我在ipcalc或NetAddress中没有找到任何专门解决此问题的内容。谢谢你的帮助 def subnetting(self, cidrBlock, subnets): networks = subnets cidrblock = cidrBlock assigned_sub
def subnetting(self, cidrBlock, subnets):
networks = subnets
cidrblock = cidrBlock
assigned_subnets = []
ipnetwork = IPNetwork(cidrblock)
subnet_list = ipnetwork.subnet(int(subnets))
for subnet in subnet_list:
assigned_subnets.append(subnet)
return assigned_subnets
要比较两个子网以查看它们是否冲突,您需要对两者应用最小的掩码以查看它们是否相等。如果他们是平等的,那么你就有了冲突 我将假设
10.10.0.0/16
网络。如果您创建10.10.0.0/23
和10.10.1.0/24
,您可以通过将/23
(255.255.254.0
)的掩码应用于10.10.0.0
和10.10.1.0
来比较它们
10.10.0.0 AND 255.255.254.0 = 10.10.0.0
10.10.1.0 AND 255.255.254.0 = 10.10.0.0
它们是相等的,因此它们重叠和冲突。尝试使用
输出:
conflict found: 10.0.1.0/24 <-> 10.0.1.0/22
发现冲突:10.0.1.0/24 10.0.1.0/22
conflict found: 10.0.1.0/24 <-> 10.0.1.0/22