一个简单方便的ip地址操作库

ipconv的Python项目详细描述


IP地址库:

这是我在处理TCP/IP分配时所做的工作尤其是那些处理IP地址和子网的。 这个库包含一个简单而方便的,尽管不是最有效的,IP地址操作的实现。

注:

我把图书馆建得更多是出于教育和学术上的原因,而不是为了实际使用。因此,我是开源的,目的是让别人在学习IP地址时发现它有用。

依赖关系:

  1. Python3运行时环境

用法:

有两个主要类可用于计算IP地址操作。

  1. ipconv
  2. 子网

要导入库,请使用-

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>

许可证:

这个项目是根据麻省理工学院的许可条款授权的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java图像在图像视图中不可见   java在抽象表模型中实现复选框   java第二个JOptionPane。showInputDialog未打开   如何将字符串中的非常大的二进制文件转换为Java中的八进制文件   基于关键字的Java文本解析算法   java Axonix(Mobiclix)错误代码999999   servlets严重错误:java web应用程序中的listenerStart错误   数据结构如何在java中反转枚举元素的内容   反射检查这是什么java类类型   java LWJGL 3没有检测到OpenGL   java如何实现Github库?   Java从终端读取参数   java在多个踏板上使用相同的可运行引用   java Play Framework 2.5应用程序无可见原因崩溃   并发性在Java中我们可以同时使用fork/join和executor服务吗?   java从树上的特定类到对象,并获取其方法(无需多次编写)   java如何在FragmentStateAdapter中获取片段   java无法使用Spring Boot访问静态资源