《python自动化运维:技术与最佳实践》 第一部分 基础篇 读书笔记
第1章 系统基础信息模块详解
系统性能信息模块psutil
不得不说,这是一个看起来普通,实际很厉害的工具。它能够轻松的跨系统获取主机的进程、CPU、内存、磁盘、网络等的信息。使用也很简单明了,例如
磁盘的使用率:
psutil.disk_usage('/')
CPU信息:
psutil.cpu_times()
- 内存信息:
virtual_memory()
- 网络信息:
net_io_counters()
- 其他信息:
psutil.users()
,boot_time()
- 进程信息 :
psutil.Process(id)
,该实例拥有names, exe , cwd, status, uids ,cpu_times等方法。
其实shell下的系统命令获取以上信息不难,但是信息需要过滤,并且要记忆命令,而记住了psutil这一个库,便可以直接dir()查看索引属性或者TAB自动补全,根据方法英文名很方便按图索骥去查看系统状态。
实用的IP地址处理模块IPy
不熟悉ip分段记法的同学有福了,IPy可以列举出IP网段包含的所有IP,并且支持多网络计算方法。
1234567891011from IPy import IP>>> IP('192.168.0.1/24').strNormal(3)'192.168.1.0 - 192.168.1.255'reverseNames() # 反向解析地址格式int(), strHex(), strBin() # 转换成整数、十六进制、二进制格式>>> IP('10.0.0.0/24') < IP('12.0.0.0/24')True>>> IP('192.168.1.100') in IP('192.168.1.0/24')TrueDNS处理模块 dnspython
123import dns.resolverA = resolver.query('www.google.com' ,'A')A.response.answer- A记录 ,将主机名转换成IP地址
- MX,邮件交换记yo录,定义邮件服务器的域名
- CNAME, 别名记录,实现域名间的映射
第2章 业务服务监控详解
文件内容差异对比
p-通过使用difflib模块实现两个字符串的差异对比,然后以版本控制风格进行输出。主要操作是将2个文本以行进行分割,然后创建d = difflab.Differ()对象,调用d.compare(A1, A2)进行比较,并且通过
'\n'.join(list(diff))
以行打印出。创建d = difflib.HtmlDiffer()对象,然后d.make_file(A1, A2)可以生成HTML格式文档。文件与目录差异对比
filecmp 提供了3个操作方法,分别为cmp单文件对比,cmpfiles多文件对比,dircmp目录对比。
有一个实践:检验源与备份目录差异,实现类似rsync的自动备份同步工作,作者提供了源代码 。
发送电子邮件模块smtplib
123456server = smtplib.STMP()server.connect(HOST , '25')server.starttls()server.login('username' , 'pw')server.sendmail(FROM , [TO] , BODY)server.quit()探测web服务质量方法
类似curl功能。