在给定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完成吗?
答案 0 :(得分:1)
答案 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())