您的位置:

pexpect——自动化工具的必备

一、expect

expect是自动化工具中的经典之一,用于模拟用户输入,实现自动化操作。例如,一个需要交互才能完成的ssh连接,可以使用expect自动化输入密码。

import pexpect

ssh = pexpect.spawn('ssh localhost')
ssh.expect('password:')
ssh.sendline('passwd')

以上代码通过模拟ssh登录的密码输入,实现了自动化登录。其中ssh.expect()函数的作用是匹配输入流中的“password:”,一旦匹配成功,就会进入ssh.sendline()函数执行密码输入操作。

二、unexpected

当然,现实总是充满了惊喜。在有些情况下,我们并不能确定输入流中会出现什么内容。这时,可以使用unexpected函数匹配到任何未知的字符。例如:

import pexpect

ssh = pexpect.spawn('ssh localhost')
ssh.expect('assword:')
ssh.sendline('passwd')

print(ssh.before)

以上代码可以自动输入密码,但是假如密码输入错误了,就需要重新输入。这时,pexpect就提供了unexpecetd函数来应对未知的字符。例如:

import pexpect

ssh = pexpect.spawn('ssh localhost')
try:
    ssh.expect('assword:', timeout=5)
    ssh.sendline('wrongpasswd')
except pexpect.exceptions.TIMEOUT:
    ssh.sendline('rightpasswd')

print(ssh.before)

以上代码通过设置pexpect.exceptions.TIMEOUT异常来进行处理。如果5秒内输入流中没有出现“assword:”,则会自动执行ssh.sendline('rightpasswd')。

三、expected

有时,我们需要等待某些指定的固定字符出现后进行操作。例如:

import pexpect

ssh = pexpect.spawn('ssh localhost')
ssh.expect('password:')
ssh.sendline('passwd')
ssh.expect('localhost')
ssh.sendline('exit')

print(ssh.before)

以上代码可以登录ssh,执行一个命令,然后退出。当执行ssh.expect('localhost')时,pexpect就会等待"localhost"这个字符串的出现。

四、unexpectedly

当需要匹配到多个未知的字符时,可以使用unexpectedly函数。

import pexpect

ssh = pexpect.spawn('ssh localhost')
ssh.expect('assword:')
ssh.sendline('passwd')
ssh.unexpectedly(['$', '#'])
ssh.sendline('ls')

print(ssh.before)

以上代码可以在ssh连接后执行ls命令,当输入流中出现了'$'或'#'时,pexpect就会停止等待,开始执行下一条指令。

总之,pexpect是自动化工具中一款强大的模拟工具,既可以匹配固定的预期字符,也可以适应未知的输入流情况。全能编程开发工程师必备!

pexpect——自动化工具的必备

2023-05-17
为知笔记私有化部署

2023-05-21
java方法整理笔记(java总结)

2022-11-08
印象笔记记录java学习(Java成长笔记)

2022-11-12
Mac笔记:在日常生活中高效实用的笔记工具

2023-05-18
expectspawn:完美的交互式命令行工具

2023-05-22
java学习笔记(java初学笔记)

2022-11-14
关于已前的学习笔记java的信息

2022-11-18
java笔记,大学java笔记

2022-11-28
java笔记,尚硅谷java笔记

2022-12-01
ExpectShell—自动化交互的利器

2023-05-17
python基础学习整理笔记,Python课堂笔记

2022-11-21
数据库的笔记mysql,数据库管理系统笔记

2022-11-24
我的ipynb笔记本

2023-05-10
python自动化面试必备的简单介绍

2022-11-16
重学java笔记,java笔记总结

2022-11-23
5000元笔记本电脑

随着科技的不断发展,笔记本电脑已经成为了现代人生活中必不可少的工具。 随着科技的不断发展,笔记本电脑已经成为人们生活中必不可少的工具。在如今数字化时代的到来,人们对信息的需求也越来越高了,而笔记本作为

2023-12-08
python课堂整理32(python笔记全)

2022-11-12
提高移动应用开发效率的必备工具

移动应用开发一直是软件开发领域中最热门的领域之一,而随着移动设备的普及和定制化需求的不断增加,开发者需要更快速、更精确地进行移动应用开发,从而满足不断增长的移动应用市场需求。 一、版本控制工具 版本控

2023-12-08
发篇java复习笔记(java课程笔记)

2022-11-09