将CIDR /8,/9转换并扩展为/10
我想在我的Python脚本中,把一个特定范围的CIDR(无类域间路由)改成另一个CIDR。比如,我有这些范围:
8.0.0.0/8
9.0.0.0/9
我想通过我的Python脚本把这些CIDR分成一个/10的CIDR,并且把结果显示成这样:
8.0.0.0/10
8.64.0.0/10
8.128.0.0/10
8.192.0.0/10
9.0.0.0/10
9.64.0.0/10
我知道,/8的CIDR应该可以转换成4个/10的CIDR。
有没有人能帮帮我?我对网络知识还很陌生,不知道该怎么做,也不知道怎么用Python来编写代码。
谢谢!
2 个回答
3
在Python 3.3及以上版本中,可以使用@Thomas Orozco建议的方法,利用ipaddress
模块来处理IP地址。
#!/usr/bin/env python3
import ipaddress
import fileinput
for line in fileinput.input():
for subnet in ipaddress.ip_network(line.strip()).subnets(new_prefix=10):
print(subnet)
示例:
$ ./convert-cidr input.txt
输出结果
8.0.0.0/10 8.64.0.0/10 8.128.0.0/10 8.192.0.0/10 9.0.0.0/10 9.64.0.0/10