gpt4 book ai didi

python - 使用 python netaddr cidr_merge 汇总相邻子网

转载 作者:行者123 更新时间:2023-11-28 22:48:54 25 4
gpt4 key购买 nike

python 3.3.4网络地址 7.12Mac OSX 10.8.5

我有一个不会与 netaddr.cidr_merge() 合并的 IPNetworks 列表,即使有些是相邻的。我做错了什么吗?

import netaddr
from netaddr import IPNetwork
iplist =[
IPNetwork('10.105.205.8/29'),
IPNetwork('10.105.205.16/28'),
IPNetwork('10.105.205.32/27'),
IPNetwork('10.105.205.64/26'),
IPNetwork('10.105.205.128/26'),
IPNetwork('10.105.205.192/28'),
IPNetwork('10.105.205.208/29'),
IPNetwork('10.105.206.48/28'),
IPNetwork('10.105.206.80/28')
]

>>> summary = netaddr.cidr_merge(iplist)
>>> summary == iplist
True

from the documentation :

netaddr.cidr_merge(ip_addrs)

一个函数,它接受一个可迭代的 IP 地址和子网序列,将它们合并到尽可能小的 CIDR 列表中。它尽可能合并相邻的子网,包含在其他子网中的子网,并删除任何重复项。

参数:ip_addrs——一个可迭代的 IP 地址和子网序列。返回:IPNetwork 对象的汇总列表。

最佳答案

@duskwuff -

感谢您的回复。我同意第一部分,但第二部分……我想我知道你的观点,但不是 100% 准确。例如,如果我从上面获取一个编辑列表,并附加 10.105.205.0/29。子网将汇总为/25。是的,它们必须是 2 的幂,但是在 netaddr 汇总之前,整个子网的所有部分都必须存在,无论它们的大小是否相等。

   iplist =[
IPNetwork('10.105.205.8/29'),
IPNetwork('10.105.205.16/28'),
IPNetwork('10.105.205.32/27'),
IPNetwork('10.105.205.64/26'),
]
>>> iplist.append(IPNetwork('10.105.205.0/29'))
>>> netaddr.cidr_merge(iplist)
[IPNetwork('10.105.205.0/25')]

关于python - 使用 python netaddr cidr_merge 汇总相邻子网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24660206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com