【IPy模块01】Python运维模块之IP 地址、网段的基本处理

news/2025/1/15 20:48:35/

实用的IP地址处理模块IPy

IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、P类型等。Python 提供了一个强大的第三方模块IPy(https://github.com/haypo/python-ipy/)

IPy模块可以很好地辅助我们高效完成IP的规划工作,下面进行详细介绍。

安装方式:pip install IPy

检测方法:

[root@python project]#ipython
In [1]: import IPy
In [2]: dir(IPy)
Out[2]: 
['INT_TYPES','IP','IPSet','IPV6_MAP_MASK','IPV6_TEST_MAP','IPint',
。。。。。。。(省略)

1.2.1、IP 地址、网段的基本处理

1.通过 version方法就可以区分出IPv4与IPv6

IPy模块包含IP类,使用它可以方便处理绝大部分格式为IPv6及IPv4的网络和地址。比如通过 version方法就可以区分出IPv4与IPv6,如:

#IP().version()
from IPy import IP
ip_content = '172.16.17.32'
ip_result = IP(ip_content).version()
print("IP:{:<13}ip类型为:{}".format(ip_content,ip_result))ip_content = 'fe80::20c:29ff:fe60'
ip_result = IP(ip_content).version()
print("IP:{:<20}ip类型为:{}".format(ip_content,ip_result))#输出:
IP:172.16.17.32 ip类型为:4
IP:fe80::20c:29ff:fe60 ip类型为:6
2.通过指定的网段输出该网段的IP个数及所有IP地址清单,代码如下:
#IP().len()
from IPy import IP
ip_range = IP('192.168.127.0/30')
ip_result = ip_range.len()
print("IP网段:{:<17}有{}个ip".format(str(ip_range),ip_result))
for i in ip_range:print(str(i))#输出:
IP网段:192.168.127.0/30 有4个ip
192.168.127.0
192.168.127.1
192.168.127.2
192.168.127.3
3.反向解析名称、IP类型、IP转换等

下面介绍IP 类几个常见的方法,包括反向解析名称、IP类型、IP转换等。

基本语法
反向解析名称reverseNames()
ip类型iptype()
ip转换转换成整型!int()转换成十六进制 strHex()转换成二进制 strBin()十六进制转换成ip地址 IP()
简单实践
from IPy import IP
#1 反向解析名称
#1-1 定制ip地址
my_ip = IP('153.3.238.110')
#1-2 获取定制域名
name = my_ip.reverseNames()
print("{}的域名名称是{}.".format(my_ip,name))输出:153.3.238.110的域名名称是['110.238.3.153.in-addr.arpa.']#2 ip类型
#2-1 定制ip地址
my_ip1 = IP('153.3.238.110')
my_ip2 = IP('192.168.1.1')
#2-2 获取定制域名
name1 = my_ip1.iptype()
name2 = my_ip2.iptype()
print("{}的类型是 {}.".format(my_ip1,name1))
print("{}的类型是 {}.".format(my_ip2,name2))输出:
153.3.238.110的类型是 PUBLIC			#PUBLIC(公网),PRIVATE(私网)
192.168.1.1的类型是 PRIVATE#3 ip类型
#3-1 定制ip地址
my_ip1 = IP('153.3.238.110')
#3-2 转换类型
int_reslut = my_ip.int()
print("{} 的转换成整型 {}.".format(my_ip,int_reslut))
Hex_reslut = my_ip.strHex()
print("{} 的转换成16进制 {}.".format(my_ip,Hex_reslut))
Bin_reslut = my_ip.strBin()
print("{} 的转换成2进制 {}.".format(my_ip,Bin_reslut))int_reslut = IP(Hex_reslut)
print("{} 的16进制转换成ip {}.".format(Hex_reslut,int_reslut))输出:
153.3.238.110 的转换成整型 2567171694
153.3.238.110 的转换成16进制 0x9903ee6e
153.3.238.110 的转换成2进制 10011001000000111110111001101110
0x9903ee6e 的16进制转换成ip 153.3.238.110
4.根据IP与掩码生成网段格式

IP方法也支持网络地址的转换,例如根据IP与掩码生产网段格式,如下:

基本语法
1 网段地址转换IP('ip地址').make_net('掩码地址')IP('ip地址段'),make_net=True)
简单实践
from IPy import IP
#1 网段地址转换
#1-1 转换样式1
ip_net = '192.168.1.0'
ip_result = IP(ip_net).make_net('255.255.255.0')
print("{} 转换后的样式 {}".format(ip_net,ip_result))
#1-1 转换样式2
ip_net = '192.168.1.0/255.255.0.0'
ip_result = IP(ip_net,make_net=True)
print("{} 转换后的样式 {}".format(ip_net,ip_result))
#1-1 转换样式3
ip_net = '192.168.1.0-192.168.1.255'
ip_result = IP(ip_net,make_net=True)
print("{} 转换后的样式 {}".format(ip_net,ip_result))输出:
192.168.1.0 转换后的样式 192.168.1.0/24
192.168.1.0/255.255.0.0 转换后的样式 192.168.0.0/16
192.168.1.0-192.168.1.255 转换后的样式 192.168.1.0/24
5.strNormal方法

也可以通过 strNormal方法指定不同 wantprefixlen 参数值以定制不同输出类型的网段输出类型为字符串,如下:

wantprefixlen的取值及含义:
wantprefxlen=0,无返回,如192.168.1.0;
wantprefxlen=1,prefx格式,如 192.168.1.0/24;
wantprefxlen=2,decimalnetmask格式,如192.168.1.0/255.255.255.0;
wantprefxlen=3,lastIP格式,如192.168.1.0-192.168.1.255。
简单实践
from IPy import IP
#1 网段地址转换
#1-1 定制ip地址
my_ip = IP('192.168.8.0/24')#1-2 格式转换
format_0 = my_ip.strNormal(0)
print("{} 转换样式0 {}".format(my_ip,format_0))
format_1 = my_ip.strNormal(1)
print("{} 转换样式1 {}".format(my_ip,format_1))
format_2 = my_ip.strNormal(2)
print("{} 转换样式2 {}".format(my_ip,format_2))
format_3 = my_ip.strNormal(3)
print("{} 转换样式3 {}".format(my_ip,format_3))输出:
192.168.8.0/24 转换样式0 192.168.8.0
192.168.8.0/24 转换样式1 192.168.8.0/24
192.168.8.0/24 转换样式2 192.168.8.0/255.255.255.0
192.168.8.0/24 转换样式3 192.168.8.0-192.168.8.255

http://www.ppmy.cn/news/1563067.html

相关文章

聊聊AI Agent

什么是AI Agent&#xff1f; AI Agent指的是一种使用人工智能技术的自主实体&#xff0c;它能够感知环境、做出决策&#xff0c;并采取行动以实现特定目标。AI Agent的核心思想是它能够独立运作&#xff0c;基于输入信息做出有根据的决策&#xff0c;并通过学习算法不断提高自…

数组排序------冒泡排序

要求&#xff1a;给定一个数组&#xff0c;让数组升序&#xff08;降序&#xff09;排序 思路&#xff1a; 假设升序排序&#xff1a; ①&#xff1a;将数组中相邻元素从前往后依次进行比较&#xff0c;如果前一个元素比后一个元素大&#xf…

FPGA随记——时钟时序一些基本知识

原文链接&#xff1a;跨时钟域设计-CSDN博客 前言 CDC&#xff08;clock domain crossing&#xff09;检查&#xff08;跨时钟域的检查&#xff09;是对电路设计中同步电路设计的检查。非同步时钟没有固定的相位关系&#xff0c;这样Setup/Hold不满足而产生了亚稳态是无法避免…

微服务的CAP定理与数据一致性抉择

分布式系统中的CAP定理&#xff0c;包括一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availability&#xff09;和分区容错性&#xff08;Partition Tolerance&#xff09;三个核心要素。 微服务是分布式系统的一种表现形式&#xff0c;以及用户对于系统是分…

风水算命系统架构与功能分析

系统架构 服务端&#xff1a;Java&#xff08;最低JDK1.8&#xff0c;支持JDK11以及JDK17&#xff09;数据库&#xff1a;MySQL数据库&#xff08;标配5.7版本&#xff0c;支持MySQL8&#xff09;ORM框架&#xff1a;Mybatis&#xff08;集成通用tk-mapper&#xff0c;支持myb…

【SQL——结构化查询语句】

数据的存储-SQL 数据的计算-Python 数据库是用来存储数据的&#xff0c;在这个过程中&#xff0c;会涉及到数据的增删改查与数据库数据表的维护管理 而SQL语言&#xff0c;就是一种对数据库、数据进行操作、管理、查询的工具。 使用数据库软件去获得库->表->数据&#x…

力扣:26、删除有序数组中的重复项(C#)

1、题目描述 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。考虑 nums 的唯一元素的数量为 k &a…

基于深度学习的视觉检测小项目(十二) 使用线条边框和渐变颜色美化界面

到目前为止&#xff0c;已经建立起了基本的项目架构&#xff0c;样式表体系也初步具备&#xff0c;但是与成品的界面相比&#xff0c;还是差点什么。 我的界面效果图&#xff1a; 优秀demo的界面截图&#xff1a; 是的&#xff0c;我的界面太“平” 了&#xff0c;没有立体感&…