我试图编写一个Python脚本将两个IP地址之间的范围转换为CIDR,
# cidr.py
import argparse
import netaddr
import sys
parser = argparse.ArgumentParser()
parser.add_argument('start_addr')
parser.add_argument('end_addr')
args = parser.parse_args()
start_addr = netaddr.IPAddress(args.start_addr)
end_addr = netaddr.IPAddress(args.end_addr)
if end_addr < start_addr:
print('start address is larger than end address. check arguments.')
sys.exit()
ip_cidr = netaddr.iprange_to_cidrs(start_addr, end_addr)
print(str(ip_cidr))
例如,使用Salesforce 的 IP 地址范围作为参数执行此脚本,它会返回正确的 CIDR 表达式。
$ python cidr.py 13.108.0.0 13.111.255.255
[IPNetwork('13.108.0.0/14')]
但是当我修改第二个参数时,它会返回几个 CIDR。
$ python hoge.py 13.108.0.0 13.211.255.255
[IPNetwork('13.108.0.0/14'), IPNetwork('13.112.0.0/12'), IPNetwork('13.128.0.0/10'), IPNetwork('13.192.0.0/12'), IPNetwork('13.208.0.0/14')]
我想知道2个IP地址的地址范围只包含1个CIDR表达式。我该如何检查?
摇曳的蔷薇
相关分类