cidrize解析ipv4/ipv6地址、cidr、范围和通配符匹配&尝试返回有效的ip地址列表
cidrize的Python项目详细描述
cidrize
智能分析IPv4/IPv6地址、CIDR、范围和通配符匹配 尝试返回有效的IP地址列表。
cidrize()函数完成了正确解析IP地址的所有工作。
支持的输入格式
输入非常灵活,可以有以下任何格式:
192.0.2.18 192.0.20.64/26 192.0.2.80-192.0.2.85 192.0.2.170-175 192.0.2.8[0-5] 192.0.2.[5678]
连字符范围不需要形成CIDR块,但起始编号必须 价值比结尾低。netaddr模块完成了大部分 为我们抬起来。
不支持的格式
网络掩码(例如192.0.2.0 255.255.255.0)和主机掩码(又称反向掩码, 192.0.2.0 0.0.0.255)符号此时不被接受。
cidrize函数返回一个合并的^{tt3}列表$ 物体。默认情况下,解析异常将引发一个CidrizeError(带有 modular=True的默认参数。您可以通过modular=False使 异常将被删除,错误文本将作为列表返回。这个 用于脚本或api,在接收异常时 优先考虑。
模块也可以作为脚本运行,以进行调试。
依赖关系
:netaddr:对 IPv4、IPv6、CIDR、EUI和MAC网络地址
用法
启动您信任的旧python解释器,然后继续!
>>> from cidrize import cidrize
老式苹果酒
>>> cidrize("1.2.3.4") [IPNetwork('1.2.3.4/32')]
带连字符的范围(默认值,strict=false)
>>> cidrize("2.4.6.8-2.4.6.80") [IPNetwork('2.4.6.0/25')]
连字符范围strict(strict=true)
>>> cidrize("2.4.6.8-2.4.6.80", strict=True) [IPNetwork('2.4.6.8/29'), IPNetwork('2.4.6.16/28'), IPNetwork('2.4.6.32/27'), IPNetwork('2.4.6.64/28'), IPNetwork('2.4.6.80/32')]
通配符
您可以使用星号提供通配符。这仅限于第四个八位组和最后一个八位组:
>>> cidrize("15.63.148.*") [IPNetwork('15.63.148.0/24')]
括号内的范围
>>> cidrize("21.43.180.1[40-99]") [IPNetwork('21.43.180.140/30'), IPNetwork('21.43.180.144/28'), IPNetwork('21.43.180.160/27'), IPNetwork('21.43.180.192/29')]
糟透了!
坏的cidr前缀被直接拒绝:
>>> cidrize("1.2.3.38/40") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "cidrize.py", line 145, in cidrize raise CidrizeError(err) cidrize.CidrizeError: CIDR prefix /40 out of range for IPv4!
古怪的范围?!
范围必须始终从下限到上限,否则会发生这种情况:
>>> cidrize("1.2.3.4-0") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "cidrize.py", line 145, in cidrize raise CidrizeError(err) cidrize.CidrizeError: lower bound IP greater than upper bound!
CIDR工具
cidrize包还附带了cidr命令,该命令有两个基本操作。
简单输出:
% cidr 1.2.3.4/30 1.2.3.4/30
详细输出:
% cidr -v 1.2.3.4/30 Spanning CIDR: 1.2.3.4/30 Block Start/Network: 1.2.3.4 1st host: 1.2.3.5 Gateway: 1.2.3.6 Block End/Broadcast: 1.2.3.7 DQ Mask: 255.255.255.252 Cisco ACL Mask: 0.0.0.3 # of hosts: 2 Explicit CIDR blocks: 1.2.3.4/30
就这样!
许可证
cidrize是根据BSD 3-Clause License授权的。请看LICENSE.rst 详细情况。