3

在给定 netaddr IPRange 或 netaddr IPNetwork 的情况下,创建可寻址 IP 地址列表的最 Pythonic 方式是什么。

如果我使用这些,那么它包括子网和广播地址:

hosts = list(IPRange('212.55.64.0','212.55.127.255'))
hosts = IPNetwork('192.168.0.1/24')

所以我需要说的 IPNetwork(192.168.0.0/27) 是从 192.168.0.1 到 192.168.0.31 的列表,注意不能包括 192.168.0.0 和 192.168.0.32。

编辑

感谢您提供有关如何使用 IPy 进行操作的信息。有人知道它是否可以用 netaddr 完成吗?

4

2 回答 2

1

以下是使用 netaddr
(Python 2.7, linux)执行所需操作的快速脚本

from netaddr import *

def addr(address, prefix):
    ip = IPNetwork(address)
    ip.prefixlen = int(prefix)
    return ip

myip = addr('192.168.0.0', '27')

for usable in myip.iter_hosts():
    print '%s' % usable
于 2013-08-07T10:15:30.940 回答
0

在做了一些研究后,我发现了这种方式:

 l = list(netaddr.IPNetwork('192.168.0.0/27').iter_hosts())
于 2010-12-28T12:00:20.520 回答