跳转到主要内容

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获取详细信息。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

cidrize-2.1.0.tar.gz (14.1 kB 查看哈希值)

上传时间

构建分发

cidrize-2.1.0-py3-none-any.whl (14.2 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面