Python:可寻址IP地址列表
怎样用Python的方式创建一个可以用的IP地址列表,给定一个netaddr的IPRange或IPNetwork?
如果我直接用这些方法,就会把子网地址和广播地址也算上:
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能不能做到?
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
0
经过一些研究,我找到了这个方法:
l = list(netaddr.IPNetwork('192.168.0.0/27').iter_hosts())