python自动化运维:技术与最佳实践_第一部分_基础篇_读书笔记

《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,并且支持多网络计算方法。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    from 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')
    True
  • DNS处理模块 dnspython

    1
    2
    3
    import dns.resolver
    A = 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

    1
    2
    3
    4
    5
    6
    server = smtplib.STMP()
    server.connect(HOST , '25')
    server.starttls()
    server.login('username' , 'pw')
    server.sendmail(FROM , [TO] , BODY)
    server.quit()
  • 探测web服务质量方法

    类似curl功能。