gpt4 book ai didi

python - 获取 CIDR 格式的下一个子网

转载 作者:行者123 更新时间:2023-12-01 02:11:59 29 4
gpt4 key购买 nike

我有以下内容:-

开始范围=“10.40.0.0/16”

end_range =“10.100.0.0/16”

我必须编写一个逻辑来迭代从startend的所有可能范围(具有相同的子网掩码/16)。对于每个子网,我将进行一些处理,然后继续处理下一个子网。

我可以通过简单的方式实现这一点,我知道,我必须增加最后一个网络八进制(即增加 40 到 41 -> 42 -> 43 等等)。

start_subnet = "10.40.0.0/16"
end_subnet = "10.100.0.0/16"


start_val = int(start_subnet.split(".")[1])
end_val = int(end_subnet.split('.')[1])
subnet_split = start_subnet.split(".")
subnet_split[1] = "{}"
subnet_proto = ".".join(subnet_split) # "10.{}.0.0/16"

for i in range(start_val, end_val+1): # iterate from 40 to 100
cur_subnet = subnet_proto.format(i) # "10.40.0.0/16", "10.41.0.0/16" etc
# do processing on cur_subnet

有没有更好的(Pythonic)方法来获取下一个子网(CIDR 格式)。可能是 netaddr 模块有一些我不知道的东西?

最佳答案

以下使用 netaddr 帮助我获得了预期的结果。

from netaddr import IPNetwork

start_range = IPNetwork("10.40.0.0/16")
end_range = IPNetwork("10.45.0.0/16")
allowed_range = []

while start_range<=end_range:
allowed_range.append(start_range)
start_range = start_range.next()

print allowed_range

这将打印以下内容:-

[IPNetwork('10.40.0.0/16'), IPNetwork('10.41.0.0/16'),
IPNetwork('10.42.0.0/16'), IPNetwork('10.43.0.0/16'),
IPNetwork('10.44.0.0/16'), IPNetwork('10.45.0.0/16')]

关于python - 获取 CIDR 格式的下一个子网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48649610/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com