一个简单方便的ip地址操作库
ipconv的Python项目详细描述
IP地址库:
这是我在处理TCP/IP分配时所做的工作尤其是那些处理IP地址和子网的。 这个库包含一个简单而方便的,尽管不是最有效的,IP地址操作的实现。
注:
我把图书馆建得更多是出于教育和学术上的原因,而不是为了实际使用。因此,我是开源的,目的是让别人在学习IP地址时发现它有用。
依赖关系:
- Python3运行时环境
用法:
有两个主要类可用于计算IP地址操作。
- ipconv
- 子网
要导入库,请使用-
from ipconv.ipconv import IPConv, Subnet
ipconv:
此类用于与IP地址相关的所有操作。
- 可以通过以下形式之一传递IP地址来实例化对象-
dotted-decimal, binary, hexadecimal or CIDR notation
ip = IPConv('127.0.0.1/8')
- 创建对象后,您可以通过- 将其转换为任何替代符号
ip.hexadecimal() # 7F:00:00:01
ip.dotted_decimal() # 127.0.0.1
ip.binary() # 01111111000000000000000000000001
- 您可以通过执行以下操作打印有关IP地址的所有相关信息-
ip.desc()
Dotted-Decimal : 127.0.0.1
Binary : 01111111000000000000000000000001
Hexadecimal : 7F:00:00:01
Classful Addressing Scheme:
Class : A
Network mask : 8
Range : 16777216
Network address : 127.0.0.0
Broadcast address : 127.255.255.255
Classless Addressing Scheme:
Network mask : 8
Range : 16777216
Network address : 127.0.0.0
Broadcast address : 127.255.255.255
- 您还可以从原始地址获取下一个或上一个IP地址,如下所示-
for i in ip.next(5):
print(i)
for i in ip.prev(5):
print(i)
子网:
这个类用于处理子网。请注意,此实现用于无类IP寻址。但是,由于类IP地址可以看作是无类的一种特殊情况,因此它与这两种情况都兼容。你只需要戴上正确的面具
- 初始化子网对象需要两件事:用CIDR表示的IP地址和所需的子网数量。
snet = Subnet('127.0.0.1/8', 8)
- 通过执行-
snet.desc()
+===================================================================+
|Index |First Address |Last Address |Range |
+===================================================================+
|1 |127.0.0.0 |127.31.255.255 |2097152 |
---------------------------------------------------------------------
|2 |127.32.0.0 |127.63.255.255 |2097152 |
---------------------------------------------------------------------
|3 |127.64.0.0 |127.95.255.255 |2097152 |
---------------------------------------------------------------------
|4 |127.96.0.0 |127.127.255.255 |2097152 |
---------------------------------------------------------------------
|5 |127.128.0.0 |127.159.255.255 |2097152 |
---------------------------------------------------------------------
|6 |127.160.0.0 |127.191.255.255 |2097152 |
---------------------------------------------------------------------
|7 |127.192.0.0 |127.223.255.255 |2097152 |
---------------------------------------------------------------------
|8 |127.224.0.0 |127.255.255.255 |2097152 |
---------------------------------------------------------------------
- 您可以通过- 获得第一个或最后一个子网
for i in snet.first(5):
print(i)
for i in snet.last(5):
print(i)
- 从任何IP地址获取子网
snet.get_subnet('127.34.78.25')
<subnet 127.32.0.0/21>
许可证:
这个项目是根据麻省理工学院的许可条款授权的。