我正在使用python编写代码以连接到nexpose(安全扫描器)API,并将输出(CIDR格式的IP范围)与另一个包含CIDR中IP范围的csv fromat进行比较,但是我的问题是当我检索到它给我一个主机范围(不包含网络和大写ip地址)。我应该如何将主机范围转换为CIDR格式?
以下代码:
data2 = [['10.1.2.1 - 10.1.2.254'] , ['10.2.3.1 - 10.2.3.254']]
for index , data in enumerate(data2):
for ind,i in enumerate(data):
if(ind<=len(data2)):
words = i.split(' - ')
[word.strip('\t').strip() for word in words]
i = len(words)
startip = ipaddress.IPv4Address(words[0])
if(i == 1):
endip = ipaddress.IPv4Address(words[0])
else:
endip = ipaddress.IPv4Address(words[1])
new_summarized_ip = list(ipaddress.summarize_address_range(startip ,endip))
print(new_summarized_ip)
else:
break
return new_summarized_ip
实现的输出:
[IPv4Network('10.1.2.1/32'), IPv4Network('10.1.2.254/32')]
[IPv4Network('10.2.3.1/32'), IPv4Network('10.2.3.254/32')]
预期输出:
10.1.2.0/24 , 10.2.3.0/24
注意:列表数据2代表包含大量IP范围列表的CSV。这些范围也不包含网络和广播地址。因此,我们需要将这些范围转换为CIDR格式,以便代码也添加网络和广播地址。