python模块之pexpect

本文介绍pexpect模块的安装方法及核心组件,包括spawn类的使用、处理shell元字符的方法、输入输出信息的获取方式、expect方法及read相关方法的详细说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pexpect可以理解成Linux下expect的python封装,通过pexpect可以时间对ssh、ftp、passwd、telnet等命令进行交互,达到自动化的目的。


一、pexpect 安装
pip/easy_install 安装:


pip install pexpect
essy_install pexpect


源码安装:
wget http://github.com/pexpect/pexpect/releases/download/3.0/pexpect-3.0.tar.gz
tar -zxvf pexpect-3.0.tar.gz
cd pexpect-3.0
python setup.py install


二、pexpect核心组件


1、spawn类
spawn类是pexpect的主要类接口,功能是启动和控制子应用程序,构造函数结构如下:
class pexpect.spawn(command,args=[],timeout=30,maxread=2000,searchwindowsize=None,logfile=None,cwd=None,enc=None,ignore_signup=True)


其中command参数可以是任意已知的系统命令,如:
child = pexpect.spawn('/usr/bin/ssh root@exmaple.com')
当子程序需要参数时,可以使用python列表代替参数项,如:
child = pexpect.spawn('/usr/bin/ssh‘ ['root@exmaple.com'])
child = pexpect.spawn('ls',['lat','/tmp'])


2、pexpect不会解析shell命令当中的元字符,包括重新定向">" 管道"|" 或通配符"*"。可以把包含这些元字符的命令
作为/bin/bash的参数进行调用,如:
child = pexpect.spawn('/bin/bash -c " ls -l | grep LOG > logs.txt "')


3、获取pexpect的输入输出信息,方便调试


1)写到日志文件
child = pexpect.spawn(command)
output = file('log.txt','w')
child.logfile = output


2)输出到标准输出
child = pexpect.spawn(command)
child.logfile = sys.stdout


4、expect方法
expect方法定义子程序的输出匹配规则,方法定义如下:
expect(pattern,timeout=-1,searchwindowsize=-1)
pattern可以是字符串、pexpect.EOF(指向缓冲区尾部,无匹配项)、pexpect.TIMEOUT(匹配等待超时)、正则表达式或则前面四种类型组成的列表。当pattern为一个列表时,返回的匹配元素的索引;当列表不止一个元素备匹配时,则返回的结果是子程序最想输出的那个元素,如:
import pexpect
child = pexpect.spawn('echo "foobar"')
print child.expect(['bar','foo','foobar'])
#输出 1 ,即 'foo'被匹配。


5、read相关方法


send(self,string)     #发送命令,不回车
send(self,string)     #发送命令,回车
sendcontrol(self,char)#发送控制符,如sendcontrol('c') 等价于 'ctrl+c'





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值