将IP地址与子网列表匹配,然后返回fi

2024-06-01 10:44:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在找一些指点让我朝正确的方向发展。我有一个大约60个可变子网的列表,这些子网位于全球不同的防火墙上。在

10.10.10.0/24  Firewall-Denver
10.10.20.0/25  Firewall-NewYork
10.10.30.0/28  Firewall-China

等等。。。在

我有另一个(非常长的)IP地址列表,我想对照子网列表来检查(我假设最好放置一个python模块来完成这项工作?)然后我想返回与该子网相关联的防火墙。在

^{pr2}$

那就把它还给我

10.10.10.1   Firewall-Denver
10.10.10.174 Firewall-Denver
10.10.20.3   Firewall-NewYork
10.10.30.19  Firewall-China

提前感谢您的建议。所以我不只是寻找IP/子网,而是要返回的另一个密钥。在


Tags: 模块ip列表密钥方向建议全球防火墙
1条回答
网友
1楼 · 发布于 2024-06-01 10:44:14

您可以使用python 3中的ipaddress模块:

import ipaddress

ipsub = {"10.10.10.0/24": "Firewall-Denver", "10.10.20.0/25": "Firewall-NewYork"}
iplist = ["10.10.10.1","10.10.10.174","10.10.20.126"]

ipfirewall = {}

for i in ipsub:
    for j in iplist:
        if ipaddress.ip_address(j) in ipaddress.ip_network(i):
            ipfirewall[j] = ipsub[i]

输出:

^{pr2}$

如果要输出嵌套列表,然后将其写入文件,请使用以下命令:

import ipaddress

ipsub = {"10.10.10.0/24": "Firewall-Denver" ,"10.10.20.0/25": "Firewall-NewYork"}
iplist = ["10.10.10.1","10.10.10.174","10.10.20.126"]

ipfirewall = []


for i in ipsub:
    for j in iplist:
        if ipaddress.ip_address(j) in ipaddress.ip_network(i):
            ipfirewall.append([j,ipsub[i]])
with open('output.txt', 'w') as file:
    file.writelines('\t'.join(i) + '\n' for i in ipfirewall)

输出:

>>> ipfirewall
[['10.10.10.1', 'Firewall-Denver'], ['10.10.10.174', 'Firewall-Denver'], ['10.10.20.126', 'Firewall-NewYork']]

相关问题 更多 >