最近发现做了很多模拟,但是一些常规分析每次都需要进行查阅,套路化计算,我在想为何不能自动化每次模拟完自动执行一下呢?之前写了一个shell脚本的,现在看起来非常不高级,而且时间久了就会忘记,磨刀不误砍柴工,所以最近粗略的学习了Python自动化运维常用的两个模块,
Pexpect
和psutil
,在这里简单介绍一下。
Pexpect简介
Pexpect是一个终端自动交互python模块,十分易于上手
安装
安装可以通过pip或者conda,适用版本为Python2.7或者Python3.3以上1pip install pexpect
简单使用说明
其实使用方法在简书的Pexpect 模块使用说明总结的非常好,这里仅做快速简要介绍
spawn() - 执行程序
|
|
参数里面我列了几个觉得很重要的内容,一个是timeout
表示等待时间,logfile
表示写入的日志文件,cwd
表示根目录
expect() - 关键字匹配
|
|
匹配后会返回值,若匹配的是一个字符串,匹配到了会返回0,若为一个列表,则匹配到了的话,会定位到列表的第几个关键字,从0开始计算
|
|
用于从标准输入中获取内容,loop这个词代表它会进入一个循环,必须要从标准输入中获取到关键字才会往下继续执行。
send() -发送关键字
其实相当于Shell中echo -e
,我感觉
|
|
read() - 返回关键字
感觉应用不多123456# 返回剩下的所有内容read() # 返回一行输出readline()# 返回列表模式的所有输出readlines()
控制子程序
一些对于执行程序的操作12345678910# 杀死子程序kill()# 查看是否存活isalive()# 等待直到子程序退出wait()# 关闭子程序close()# 子程序进程pid
运行功能
|
|
可能大家对run()
和spwan()
之间的区别很好奇,run()
相比spwan()
为等待命令完全完成,然后才会返回结果