netaddr.cidr_merge我有一个 IP 网络列表,即使其中一些是相邻的,也不会合并。难道我做错了什么?
>>> from netaddr import IPNetwork, cidr_merge
>>> 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 = cidr_merge(iplist)
>>> summary == iplist
True
Run Code Online (Sandbox Code Playgroud)
我在 Mac OSX 10.8.5 上使用 Python 3.3.4 和 netaddr 7.12。
@黄昏沃夫-
感谢你的回复。我同意第一部分,但第二部分......我想我知道你的意思,但它不是 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')]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9664 次 |
| 最近记录: |