Python:可寻址IP地址列表

时间:2010-12-24 09:46:20

标签: python network-programming cidr

在给定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完成吗?

3 个答案:

答案 0 :(得分:1)

IPy

答案 1 :(得分: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

答案 2 :(得分:0)

经过一番研究后我发现了这种方式:

 l = list(netaddr.IPNetwork('192.168.0.0/27').iter_hosts())