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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 运维Python自动化之路:基础信息模块之IPy模块(下)

五、strNomal方法


方法简介:

通过指定 wantprefixlen数值,来获取不同的网段
值解析:
  0 返回默认的IP地址
  1 返回ip地址/掩码值 样式
  2 返回ip地址/掩码  样式
  3 返回ip地址-IP地址  样式

简单实践:

#网段常见操作
#导包
from IPy import IP
#1.网段地址转换
#1.1定制ip
my_ip = IP('192.168.1.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))

640.png


六、多网络实践

基础知识:

简介:
  相同ip段,不同的掩码获取的ip地址不一样
  不同ip段,相同的掩码获取的ip地址不一样
  而不同的网段,彼此之间有可能存在ip地址重合交叉

简单实践:

1.掩码的作用

#多网段的常见操作
#导包
from IPy  import IP
#1.掩码的作用
#1.1相同ip段不同的掩码获取的ip地址不一样
ip_range  = IP('192.168.1.0/30')
ip_range2 = IP('192.168.1.0/28')
#1.2获取ip数量及查询所有的ip
print("{} 网段有{} 个ip".format(ip_range,ip_range.len()))
for i in ip_range:
  print(i)
print('===================================================')
print("{} 网段有{} 个ip".format(ip_range2,ip_range2.len()))
for j in ip_range2:
        print(j)


640.png

基本实践:

网段比较
  ip对象 <  ip对象
  结果为True或者为False
地址包含
  ip地址 ip  ip对象
  结果为True或者为False
网段重叠
  ip对象.over laps(ip网段)

1.网段比较

#多网段的基本i操作
#导包
from IPy  import IP
#1.网段比较
ip_net1 = '192.168.1.0/24'
ip_net2 = '192.168.1.0/24'
ip_net3 = '192.168.2.0/24'
result = IP(ip_net1) == IP(ip_net2)
print("{}和{}网段信息是否一致:{}".format(ip_net1,ip_net2,result))
result = IP(ip_net1) == IP(ip_net3)
print("{}和{}网段信息是否一致:{}".format(ip_net1,ip_net3,result))
result = IP(ip_net1) < IP(ip_net3)
print("{}和{}网段信息是否一致:{}".format(ip_net1,ip_net3,result))


640.png

2.地址包含

#2.地址包含
#2.1 判断ip地址是否在某个ip段内
ip_add  = '192.168.1.100'
ip_add2 = '192.168.2.100'
ip_net  = '192.168.1.0/24'
result = ip_add in IP(ip_net)
print("{}是否在网段{}内:{}".format(ip_add,ip_net,result))
print("{}是否在网段{}内:{}".format(ip_add2,ip_net,result))
#2.2 判断ip段是否在另外一个ip段内
ip_net2  = '192.168.0.0/16'
result2 = ip_net in IP(ip_net2)
print("{}是否在网段{}内:{}".format(ip_net2,ip_net,result2))

640.png

3.网段重叠

#3.网段重叠
#3.1返回值-1代表前面的网段是后面网段的子集
ip_net1 = '192.168.1.0/24'
ip_net2  = '192.168.0.0/16'
ip_net3 = '192.168.3.0/24'
result1 = IP(ip_net1).overlaps(ip_net2)
print("{}和{}是否存在网络重叠:{}".format(ip_net1,ip_net2,result1))
#3.2返回值1代表后面的网段是前面网段的子集
result2 = IP(ip_net2).overlaps(ip_net1)
print("{}和{}是否存在网络重叠:{}".format(ip_net1,ip_net2,result2))
#3.3返回值0代表两个网段没有重合
result3 = IP(ip_net1).overlaps(ip_net3)
print("{}和{}是否存在网络重叠:{}".format(ip_net1,ip_net3,result3))

640.png

综合实践:

目的:

通过一个简单的场景,来对我们的ipy模块进行综合实践
对用户输入的信息进行判断
如果是多个ip地址就逐一的查看具体信息
如果是单个ip地址,就显示ip反向解析域名
输出ip地址的其他几种格式

简单实践:

#网络的综合实践
#导包
from IPy import IP
#1.接收用户的输入信息
ip_s = input("Please input an IP or net-range:")
#2.对用户输入的信息进行判断
ips = IP(ip_s)
if len(ips) > 1:
  #3.如果是多个ip地址就逐一的查看具体信息
  print("net:{}".format(ips.net()))
  print("netmask:{}".format(ips.netmask()))
  print("broadcast:{}".format(ips.broadcast()))
  print("reverse address:{}".format(ips.reverseNames()[0]))
  print("subnet:{}".format(ips.len()))
else:
  #4.如果是单个ip地址,就显示反向解析域名
  print("reverse address:{}".format(ips.reverseNames()[0]))
#5.输出IP地址的其他几种格式
print("ip地址的十六进制格式:{}".format(ips.strHex()))
print("ip地址的二进制格式:{}".format(ips.strBin()))
print("ip地址的类型:{}".format(ips.iptype()))

640.png

综合实践改造:
代码问题


640.png


改造思路

在用户输入的时候,对用户输入的信息进行判断,确定用户输入的内容是否是ip地址
--分析
  我们知道ipy模块,有一个方法用于判断ip地址是否正确,version
  正常的时候,version有两种值4或者6,否则报错。
#网络的综合实践改造
#导包
from IPy import IP
#1.接收用户的输入信息
ip_s = input("Please input an IP or net-range:")
#2.对用户输入的信息进行判断
try:
 ips = IP(ip_s)
except Exception as e:
  print("您输入的ip地址不是正确的格式")
else:
  if len(ips) > 1:
  #3.如果是多个ip地址就逐一的查看具体信息
    print("net:{}".format(ips.net()))
    print("netmask:{}".format(ips.netmask()))
    print("broadcast:{}".format(ips.broadcast()))
    print("reverse address:{}".format(ips.reverseNames()[0]))
    print("subnet:{}".format(ips.len()))
  else:
  #4.如果是单个ip地址,就显示反向解析域名
   print("reverse address:{}".format(ips.reverseNames()[0]))
  #5.输出IP地址的其他几种格式
  print("ip地址的十六进制格式:{}".format(ips.strHex()))
  print("ip地址的二进制格式:{}".format(ips.strBin()))
  print("ip地址的类型:{}".format(ips.iptype()))

640.png

相关文章
|
21天前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
134 61
|
3天前
|
机器学习/深度学习 运维 数据可视化
Python时间序列分析:使用TSFresh进行自动化特征提取
TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
34 16
Python时间序列分析:使用TSFresh进行自动化特征提取
|
1月前
|
Python
Python Internet 模块
Python Internet 模块。
124 74
|
13天前
|
存储 安全 数据可视化
用Python实现简单的任务自动化
本文介绍如何使用Python实现任务自动化,提高效率和准确性。通过三个实用案例展示:1. 使用`smtplib`和`schedule`库自动发送邮件提醒;2. 利用`shutil`和`os`库自动备份文件;3. 借助`requests`库自动下载网页内容。每个案例包含详细代码和解释,并附带注意事项。掌握这些技能有助于个人和企业优化流程、节约成本。
45 3
|
13天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
25 3
|
1月前
|
JSON 数据可视化 测试技术
python+requests接口自动化框架的实现
通过以上步骤,我们构建了一个基本的Python+Requests接口自动化测试框架。这个框架具有良好的扩展性,可以根据实际需求进行功能扩展和优化。它不仅能提高测试效率,还能保证接口的稳定性和可靠性,为软件质量提供有力保障。
65 7
|
3月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
81 4
|
16天前
|
人工智能 运维 监控
AI辅助的运维流程自动化:实现智能化管理的新篇章
AI辅助的运维流程自动化:实现智能化管理的新篇章
348 22
|
9天前
|
Kubernetes Java 持续交付
小团队 CI/CD 实践:无需运维,Java Web应用的自动化部署
本文介绍如何使用GitHub Actions和阿里云Kubernetes(ACK)实现Java Web应用的自动化部署。通过CI/CD流程,开发人员无需手动处理复杂的运维任务,从而提高效率并减少错误。文中详细讲解了Docker与Kubernetes的概念,并演示了从创建Kubernetes集群、配置容器镜像服务到设置GitHub仓库Secrets及编写GitHub Actions工作流的具体步骤。最终实现了代码提交后自动构建、推送镜像并部署到Kubernetes集群的功能。整个过程不仅简化了部署流程,还确保了应用在不同环境中的稳定运行。
46 9
|
2月前
|
机器学习/深度学习 运维 监控
智能化运维:从自动化到AIOps的演进之路####
本文深入探讨了IT运维领域如何由传统手工操作逐步迈向高度自动化,并进一步向智能化运维(AIOps)转型的过程。不同于常规摘要仅概述内容要点,本摘要将直接引入一个核心观点:随着云计算、大数据及人工智能技术的飞速发展,智能化运维已成为提升企业IT系统稳定性与效率的关键驱动力。文章详细阐述了自动化工具的应用现状、面临的挑战以及AIOps如何通过预测性分析和智能决策支持,实现运维工作的质变,引领读者思考未来运维模式的发展趋势。 ####

热门文章

最新文章