Python:可寻址IP地址列表

3 投票
2 回答
2504 浏览
提问于 2025-04-16 08:59

怎样用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())

撰写回答