【问题标题】:summarize very long list of ipv4 addresses in python在python中总结很长的ipv4地址列表
【发布时间】:2014-08-28 20:23:21
【问题描述】:

我有一个很长的 IPv4 地址列表(~18k),我想尽可能地总结一下:例如

119.195.74.210
119.196.154.2
119.196.247.223
119.197.20.186
119.199.160.107
119.199.160.32
119.199.160.33
119.199.160.34
119.199.160.54
119.199.160.55

应该是这样的

119.195.74.210/32
119.196.154.2/32
119.196.247.223/32
119.197.20.186/32
119.199.160.107/32
119.199.160.32/31
119.199.160.34/32
119.199.160.54/31

速度很重要。

有什么建议吗?

【问题讨论】:

  • 有没有追加/32和/31的模式
  • 这些地址空间加起来不太好。您确定它们是有效的地址空间吗?因为看起来你只是随机地将 /31 放在一个位置然后 /32.. 当 .32 在 31 子网中时,逻辑与此相反再次在 31 子网中.. 对我来说这看起来不是一个好的结构:/

标签: python network-programming ip summarization


【解决方案1】:

我会使用netaddr 模块。假设您有一个包含 IP 地址的文本文件,您的代码可能如下所示:

import sys
from netaddr import IPAddress, cidr_merge

fh     = open (sys.argv[1], 'r')
iplist = list()
for addr in fh:
    addr = IPAddress (addr.strip())
    iplist.append (addr)

fh.close()
print cidr_merge (iplist)

【讨论】:

    猜你喜欢
    • 2015-02-10
    • 2011-06-24
    • 1970-01-01
    • 2013-12-12
    • 2011-01-27
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    相关资源
    最近更新 更多