Cidrize解析IPv4/IPv6地址、CIDR、范围和通配符匹配,并尝试返回有效的IP地址列表
项目描述
Cidrize
面向人类的IP地址解析。
Cidrize接受人们在实践中倾向于使用的IP地址输入,验证它们,并将它们转换为对象。
智能解析IPv4/IPv6地址、CIDR、范围和通配符匹配,以尝试返回有效的IP地址列表。
函数cidrize()负责尝试正确解析IP地址的所有工作。
安装
您可以通过Pip安装cidrize。
pip install cidrize
依赖项
Cidrize基本上是围绕netaddr的一个薄层,为解析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函数返回一个包含合并的netaddr.IPNetwork对象的列表。默认情况下,解析异常将引发一个CidrizeError(默认参数为raise_errors=True)。您可以传递raise_errors=False来取消异常,错误文本将作为列表返回。这适用于脚本或API,在这些脚本或API中,接收异常可能不受欢迎。
模块还可以作为脚本运行,用于调试目的。
cidrize函数
启动您信任的旧Python解释器,并跟随操作!
>>> from cidrize import cidrize
传统的CIDR
>>> 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=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获取详细信息。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。