我正在尝试获取一个包含IP地址和子网掩码(1.0.0.0/24)的列表,并计算该列表中的IP地址总数。然而,我试图避免计算相同的IP地址'但有一个更高的子网掩码。你知道吗
示例 1.0.0.0/24 1.0.0.0/16 1.0.0.0/8级
这里我只想用/8来计算IP地址,因为它包含/16和/24
我已经把所有的IP地址都列在一个列表里了,像这样。。。你知道吗
示例 1.0.0.0/24 1.0.0.0/16 1.0.0.0/8 2.0.0.0/24 2.0.0.0/16 等。。。。你知道吗
然后我使用下面的代码弹出子网掩码/24、/16、/8等等。。。就像这样
subIP = [i.split('/', 1)[1] for i in newSet]
然后通过全局声明ipTotal来计算IP空间
for element in subIP:
y = 32 - int(element)
x = pow(2, y)
ipTotal = ipTotal + x
不过,我现在正在计算1.0.0.0/24、1.0.0.0/16和1.0.0.0/8,而我需要做的只是计算1.0.0.0/8。你知道吗
基本上我是过度计算的IP空间量。你知道吗
我需要如何处理这个问题?我想把1.0.0.0放到一个列表中,然后把/24放到另一个列表中。。。然后运行嵌套for循环进行比较,但我很确定这不会起作用。你知道吗
您应该将ip/子网列表解析为一个dict,其中ip作为键,一组子网作为值。然后迭代密钥,找到子网集合上的最小值,并将计算仅应用于该ip/子网。你知道吗
像这样:
您可以使用一个非常适合于唯一
key,value
配对的字典,只需进行您想要的检查,然后将地址重新组合成一个列表。你知道吗updated_list
将是具有该IP的最小子网的唯一IP地址的列表。你知道吗ip_dict.values()
给出这些唯一IP的子网列表。你知道吗相关问题 更多 >
编程相关推荐