使用Python代码将主机IP地址列表转换为正确的CIDR格式

时间:2018-09-08 11:27:34

标签: python

我正在使用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格式,以便代码也添加网络和广播地址。

0 个答案:

没有答案