使用python和netaddr模块比较一组IP地址与子网

时间:2016-05-10 10:04:36

标签: linux python

我可以在“ip_list”和“banned_subnets”中传递文件。我有多个IP列表需要与多个子网匹配,并且不可能在脚本中列出所有IP。为此,我创建了两个文件ipaddr_list,其中包含IP列表和sub_list,其中包含子网列表。

有些人可以建议我如何在下面的脚本中得到这个:

import netaddr

ip_list = ['10.22.140.10', '10.11.14.11', '10.71.13.13', '10.10.131.2', '10.12.6.11', '10.1.6.10']

banned_subnets = ['10.1.6.0/24', '10.10.13.0/24', '10.10.14.0/24' ]

new_list = [str(ip) for ip in netaddr.IPSet(ip_list) & (netaddr.IPSet(banned_subnets))]

print new_list

1 个答案:

答案 0 :(得分:2)

我假设你说ip_listbanned_subnets的文件是每行含有IP的文本文件。

您需要做的是阅读这些文本文件并将其删除,以便采用列表形式。我将在下面添加一个代码,您可以相应地将代码用于另一个代码。

with open('ip_list.txt') as f:
    IP_list = [line for line in f]

希望你也可以为banned_subnets做同样的事情。