aaa*_*210 5 python ip-address cidr
蛮力方法:
from ipaddr import IPv4Network
n = IPv4Network('10.10.128.0/17')
all = list(n.iterhosts()) # will give me all hosts in network
first,last = all[0],all[-1] # first and last IP
Run Code Online (Sandbox Code Playgroud)
我想知道如何从 CIDR 获取第一个和最后一个 IP 地址,而不必迭代可能非常大的列表来获取第一个和最后一个元素?
我想要这个,这样我就可以使用如下命令生成此范围内的随机 IP 地址:
socket.inet_ntoa(struct.pack('>I', random.randint(int(first),int(last))))
Run Code Online (Sandbox Code Playgroud)
bsa*_*bsa 10
从Python 3.3开始,您可以使用该ipaddress
模块
你可以这样使用它:
import ipaddress
n = ipaddress.IPv4Network('10.10.128.0/17')
first, last = n[0], n[-1]
Run Code Online (Sandbox Code Playgroud)
__getitem__
已实现,因此它不会生成任何大列表。
https://github.com/python/cpython/blob/3.6/Lib/ipaddress.py#L634
也许可以尝试 netaddr,特别是索引部分。
https://pythonhosted.org/netaddr/tutorial_01.html#indexing
from netaddr import *
import pprint
ip = IPNetwork('10.10.128.0/17')
print "ip.cidr = %s" % ip.cidr
print "ip.first.ip = %s" % ip[0]
print "ip.last.ip = %s" % ip[-1]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14625 次 |
最近记录: |