我正在使用python 2.6.6,并且不允许更改它。我有一个排序的IPv4地址列表。我需要找到覆盖列表中所有IP地址的最小网络。最小的网络可以是CIDR,也可以是带有子网掩码的网络地址。我尚未找到使用netaddr模块执行此操作的简单方法。例子如下:

x=['192.168.0.0', '192.168.2.245', '192.168.255.255']
cidr = get_cidr_for_addresses(x)
print cidr ##should print '192.168.0.0/16'

最佳答案

这似乎正是netaddr.spanning_cidr所做的。

$ python
Python 2.7.9rc1 (default, Dec 10 2014, 10:58:16)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import netaddr
>>> x = netaddr.spanning_cidr(['192.168.0.0', '192.168.2.245', '192.168.255.255'])
>>> print x
192.168.0.0/16
>>> print type(x)
<class 'netaddr.ip.IPNetwork'>

关于python - 在Python中给定IPv4地址列表的情况下获得最小的网络,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27428246/

10-13 06:41