运维Python自动化之路:基础信息模块之IPy模块(上)

简介: 运维Python自动化之路:基础信息模块之IPy模块

一、模块简介:


IPy这个强大的Python第三方包,主要提供了包括网段、网络掩码、广播地址、子网数、IP类型的处理等等功能。


安装:


pip3 install IPy


640.png

检测方法:

640.png

二、基本信息:


目标:


通过IPy的学习,获取ip和网段的基本信息。

方法:

识别ip分类    
    version()
 获取ip数量
    len()

扩展:

 ip分类:
   ipv4:
        样式:192.168.1.1
        四部分数字组成,0-9,值的范围是0~255
   ipv6
        样式:00:00:00:00:00:00
        六部分组成,0-9,a-f

简单实践:

1.识别IP分类

1.1 IPv4的演示

ip_content = '192.168.242.130/32'
ip_result = IP(ip_content).version()
print("{} 的ip类型是:IPv{}".format(ip_content,ip_result))

640.png

1.2 IPv6的演示

ip_content = 'fe80::124:5bff:fc2b:619f'
ip_result = IP(ip_content).version()
print("{} 的ip类型是:IPv{}".format(ip_content,ip_result))

640.png

2.获取ip数量

640.png

#2.1定义网段
ip_range  = IP('192.168.1.0/30')
#2.2获取ip数量
 print("{} 网段有{} 个ip".format(ip_range,ip_range.len()))
#2.3 查询所有的ip
for i in ip_range:
print(i)


640.png

三、基本操作:

目标:


通过IPy的学习,了解ip操作的常见方式。

基本语法:


反向解析:
  reversnNames()
ip类型:
  iptype()
ip转换
  转换成整型 int()
  转换成十六进制 strHex()
  转换成二进制 strBin()
  十六进制转换成ip地址 IP()

扩展:

举例:www.baidu.com ---- 36.152.44.95
正向解析:
  通过域名找到对应的ip地址
反向解析:
  根据ip地址,找到对应的网站域名

简单实践:

1.反向域名解析

#获取Ip相关信息
#导包
import IPy
from IPy import IP
#1.反向解析名称
#1.1定制ip地址
my_ip = IP('36.152.44.95')  
#1.2获取定制域名
name = my_ip.reverseNames()
print("{} 的域名名称是:{}".format(my_ip,name))

640.png

2.获取ip类型

#2.ip类型
#2.1地址ip地址
my_ip1 = IP('36.152.44.95')  #PUBLIC类型公网
my_ip2 = IP('192.168.1.1')   #PRIVATE类型私网
#2.2获取ip类型
name1 = my_ip1.iptype()
name2 = my_ip2.iptype()
print("{} 的类型是{}".format(my_ip1,name1))
print("{} 的类型是{}".format(my_ip2,name2))

640.png

3.ip转换

#3.ip转换
#3.1定制ip地址
my_ip = IP('36.152.44.95')
#3.2 转换类型
int_result = my_ip.int()
print("{} 的转换成整型{}".format(my_ip,int_result))
hex_result = my_ip.strHex()
print("{} 的转换成十六进制{}".format(my_ip,hex_result))
bin_result = my_ip.strBin()
print("{} 的转换成二进制{}".format(my_ip,bin_result))


640.png


#3.3 ip地址反转换
hex_address = '0x24982c5f'
ip_result = IP(hex_address)
print("{}的转换成ip类型{}".format(hex_address,ip_result))
bin_address = '00100100100110000010110001011111'
#注意:IP接收的内容不能是非十六进制IP地址
ip_result1 = IP(bin_address)
print("{}的转换成ip类型{}".format(hex_address,ip_result1))

640.png四、网段转换


扩展:

ip的表现样式:
  样式1   ip/掩码数字
      192.168.1.1/24
  样式2  ip   掩码地址
    192.168.1.1 255.255.255.0


格式:


格式:  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.2转换样式2
ip_net2 = '192.168.1.0/255.255.255.0'
ip_result2 = IP(ip_net2,make_net=True)
print("{} 转换后的样式 {}".format(ip_net2,ip_result2))
#1.3转换样式3
ip_net3 = '192.168.1.0-192.168.1.255'
ip_result3 = IP(ip_net3,make_net=True)
print("{} 转换后的样式 {}".format(ip_net3,ip_result3))

640.png

相关文章
|
1月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
278 7
|
1月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
310 4
|
1月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
227 0
|
1月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
164 0
|
Python 人工智能 数据可视化
Python模块与包(八)
Python模块与包(八)
150 0
Python模块与包(八)
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
365 62
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
257 61
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。

推荐镜像

更多