gpt4 book ai didi

python - 需要分解一个 IP 子网

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:09 26 4
gpt4 key购买 nike

我正在尝试编写一个脚本,将大于(不大于/16)大于/24 的子网分解为/24 子网。例如:10.10.10.0/23 应该给我 10.10.10.0/24 和 10.10.11.0/24

我的逻辑是首先扫描 CIDR 掩码。如果小于 24,则从 24 中减去它,该数字(假设为 x)给出/24 的总数,然后是 IP x 的 1 到第三个八位字节和/24。

例如:10.10.8.0/22

if 22 < 24 
x = 24-22 = 2
total # of /24s = 2^x = 4
So output :
10.10.8.0/24
10.10.9.0/24
10.10.10.0/24
10.10.11.0/24

我不确定如何仅为第三个八位字节编码/修改字符串以及如何仅向第三个八位字节加 1。

我正在考虑创建所有第三个八位字节值的列表并重新构造 IP。但是,如果有更简单的方法,那将对我有很大帮助!

谢谢!

最佳答案

如果您使用的是 Python 3.3 或更新版本,则可以使用 the ipaddress module .使用 subnets method ,你可以一行完成:

>>> list(ipaddress.ip_network('10.10.8.0/22').subnets(new_prefix=24))
[IPv4Network('10.10.8.0/24'), IPv4Network('10.10.9.0/24'), IPv4Network('10.10.10.0/24'), IPv4Network('10.10.11.0/24')]

转换为字符串很简单。只需转换为 str

关于python - 需要分解一个 IP 子网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28920231/

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