【发布时间】:2017-02-25 02:11:07
【问题描述】:
python 中有没有办法从给定的起始网络地址获取下一个网络地址。有办法使用ipaddress 模块获取下一个主机IP,但是有没有办法自己获取下一个网络?
例如,如果我的起始网络地址为10.1.0.0/16,那么在每次迭代中,我希望获得下一个网络地址为10.2.0.0/16、10.3.0.0/16 等等。
所以在10.1.0.0/16 的情况下,网络部分是前两个八位字节(10.1),其余的是主机部分。我希望网络部分在每次迭代时单独增加,而主机部分保持原样,例如:
start_network = ipaddress.ip_network('10.1.0.0/16')
# Now on each iteration I want the below output
In [37]: next(start_network)
Out[37]: IPv4Network('10.2.0.0/16')
In [38]: next(start_network)
Out[38]: IPv4Network('10.3.0.0/16')
尝试使用子网选项,但顾名思义,它将为您提供当前网络中的子网络
In [34]: network = ipaddress.ip_network('10.1.0.0/16')
In [35]: network.subnets()
但我们的要求是获取下一个网络地址(最好不进行任何字符串操作)
【问题讨论】:
-
我已在此处发布了针对您的具体问题的解决方案:stackoverflow.com/a/42451377/7311767
-
但是你的答案是要获取下一个主机IP,而我的问题是获取下一个网络地址
-
什么是下一个网络地址?如果我的回答还不够,建议使用示例来编辑您的问题,以显示您的期望。
-
使用您建议的第一次迭代代码,我将获得的值为 10.1.0.1(第一个主机 IP),我需要网络 ip,即 10.2.0.0/16
-
好的,那么问题被错误地关闭了。你有一个不同的问题。请编辑问题并说明您的需求。
标签: python networking