自动化运维第三方库(一)
关于Python自动化运维的模块总结(一)
以下内容参考刘天斯所著《Python自动化运维技术与最佳实践》
1.系统基础信息模块
psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who等。例如获取Linux操作系统的CPU利用率:
1 | import psutil |
psutil也可以获得当前系统的进程信息,可以得知应用程序的运行状态,包括进程的启动时间、查看或设置CPU亲和度、内存使用率、IO信息、socket连接、线程数等。
参考提示:psutil示例参考
模块说明官网
2.IP地址处理模块
IPy可以计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等。例如通过version方法就可以区分出IPv4与IPv6:
1 | from IPy import IP |
参考提示: 官网文档与示例参考
3.DNS处理模块
dnspython是Python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩展DNS)。
dnspython模块提供了大量DNS处理方法,最常用的方法是域名查询。dnspython提供了一个DNS解析器类————resolver,使用它的query方法来实现域名的查询功能,query方法的定义如下:
query(self,qname,rdtype=1,rdclass=1,tcp=False,source=None,raise_on_no_answer=True,
source_port=0)
其中,qname参数为查询的域名,rdtype参数用来指定RR资源的类型。
参考提示: 官网文档
4.文件内容差异对比
difflib是Python的标准库模块,无需安装,作用是对比文本之间的差异,且支持输出可读性比较强的HTML文档,可以用来对比代码、配置文件的差别。
采用HtmlDiff()类的make_file()方法就可以生成美观的HTML文档。
参考提示: 官方文档
5.文件与目录差异对比方法
Python标准库自带的模块filecmp,可以实现文件、目录、遍历子目录的差异对比功能,比如报告中输出目标目录比原始多出的文件或子目录,即使文件同名也会判断是否为同一个文件(内容级对比)等。
常用方法举例:
- 单文件对比,采用filecmp.cmp(f1,f2,[,shallow])方法,比较文件名f1和f2的文件,相同返回True,shallow无认为True,意思是只根据os.stat()方法返回的文件基本信息进行对比,比如最后访问时间、修改时间、状态改变时间等,会忽略文件内容的对比。
- 多文件对比,采用filecmp.cmpfiles(dir1,dir2,common[,shallow])方法,对比dir1和dir2目录给定的文件清单。该方法返回文件名的三个列表,分别为匹配、不匹配、错误。错误列表包括了目录不存在文件、不具备读权限或其他原因导致的不能比较的文件清单。
- 目录对比,通过dircmp(a,b[,ignore[,hide]])类创建一个目录比较对象,其中a和b是参加比较的目录名。ignore代表文件名忽略的列表,并默认为[‘RCS’,’CVS’,’tags’],hide代表隐藏的列表,默认为[os.curdir,os.pardir]。dircmp还提供了输出报告的方法,提供了比较的属性,敬请参考官方文档。
参考提示: 官方文档
6.发送电子邮件模块
Python的smtplib模块可以实现邮件的发送功能,模拟一个smtp客户端,通过与smtp服务器交互来实现邮件发送的功能。简单示例:
1 | import smtplib |
MIME还可以扩展邮件格式,使邮件包含HTML、图像、声音以及附件格式等。
参考提示: smtplib模块常用方法
email.mine常用类定义
自动化运维第三方库(一)