def get_free_ip(subnets):
for subnet in subnets:
reserved = subnet.reserved_addresses
net = ipaddr.IPv4Network(subnet.address)
used_ips = [ip.address for ip in subnet.ips]
if (net.numhosts -2 - reserved) <= len(used_ips):
continue
for ip in net.iterhosts():
if reserved > 0:
reserved -= 1
continue
if ip.compressed not in used_ips:
return ip.compressed
raise SubnetFullException()
评论列表
文章目录