Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查子网冲突_Python_Networking - Fatal编程技术网

Python 检查子网冲突

Python 检查子网冲突,python,networking,Python,Networking,我正在编写一个脚本,该脚本获取a/16并将其分解为不同的子网(/24、23、27等)。我意识到我可能会遇到冲突的子网,我正在寻找一种方法来检查这一点。我在ipcalc或NetAddress中没有找到任何专门解决此问题的内容。谢谢你的帮助 def subnetting(self, cidrBlock, subnets): networks = subnets cidrblock = cidrBlock assigned_sub

我正在编写一个脚本,该脚本获取a/16并将其分解为不同的子网(/24、23、27等)。我意识到我可能会遇到冲突的子网,我正在寻找一种方法来检查这一点。我在ipcalc或NetAddress中没有找到任何专门解决此问题的内容。谢谢你的帮助

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