discuz企业网站,html前端开发,网站建站什么目录,治多县网站建设公司Pexpect 是 Expect 语言的一个 Python 实现#xff0c;是一个用来启动子程序#xff0c;并使用正则表达式对程序输出做出特定响应#xff0c;以此实现与其自动交互的 Python 模块。 Pexpect 的使用范围很广#xff0c;可以用来实现与 ssh、ftp 、telnet 等程序的自动交互是一个用来启动子程序并使用正则表达式对程序输出做出特定响应以此实现与其自动交互的 Python 模块。 Pexpect 的使用范围很广可以用来实现与 ssh、ftp 、telnet 等程序的自动交互可以用来自动复制软件安装包并在不同机器自动安装还可以用来实现软件测试中与命令行交互的自动化。整体来说大致的流程包括运行程序程序要求人的判断和输入Expect 通过关键字匹配根据关键字向程序发送符合的字符基本使用流程pexpect 的使用说来说去就是围绕3个关键命令做操作首先用 spawn 来执行一个程序然后用 expect 来等待指定的关键字这个关键字是被执行的程序打印到标准输出上面的最后当发现这个关键字以后根据关键字用 send 方法来发送字符串给这个程序第一步只需要做一次但在程序中会不停的循环第二、三步来一步一步的完成整个工作。掌握这个概念之后 pexpect 的使用就很容易了。当然 pexpect 不会只有这 3 个方法实际上还有很多外围的其他方法spawn() - 执行程序spawn() 方法用来执行一个程序它返回这个程序的操作句柄以后可以通过操作这个句柄来对这个程序进行操作比如process pexpect.spawn(ftp sw-tftp)上面 spawn() 中的字符串就是要执行的程序这里我们打开一个到 sw-tftp 服务器的 ftp 连接。 spawn() 中的第一个元素就是要执行的命令除此之外还可以指定一些其他参数比如 pexpect.spawn(ftp sw-tftp, timeout60) 就指定了超时时间这些具体的会在后面讲解。process 就是 spawn() 的程序操作句柄了之后对这个程序的所有操作都是基于这个句柄的所以它可以说是最重要的部分。注意: spawn() 或者说 pexpect 并不会转译任何特殊字符 比如 | * 字符在Linux的shell中有特殊含义但是在 pexpect 中不会转译它们如果在 linux 系统中想使用这些符号的正确含义就必须加上 shell 来运行这是很容易犯的一个错误。正确的方式process pexpect.spawn(/bin/bash –c ls –l | grep LOG log_list.txt)expect() - 关键字匹配当 spawn() 启动了一个程序并返回程序控制句柄后就可以用 expect() 方法来等待指定的关键字了。它最后会返回 0 表示匹配到了所需的关键字如果后面的匹配关键字是一个列表的话就会返回一个数字表示匹配到了列表中第几个关键字从 0 开始计算。send() - 发送关键字send() 作为3个关键操作之一用来向程序发送指定的字符串它的使用没什么特殊的地方比如process.expect(ftp)process.send(by\n)这个方法会返回发送字符的数量。sendline() - 发送带回车符的字符串sendline() 和 send() 唯一的区别就是在发送的字符串后面加上了回车换行符这也使它们用在了不同的地方只需要发送字符就可以的话用send()如果发送字符后还要回车的话就用 sendline()它也会返回发送的字符数量sendcontrol() - 发送控制信号sendcontrol() 向子程序发送控制字符比如 ctrlC 或者 ctrlD 之类的比如你要向子程序发送 ctrlG那么就这样写process.sendcontrol(g)简单实例command ssh usernamehostchild pexpect.spawn(command)ret child.expect([pexpect.TIMEOUT,Are you sure you want to continue connecting,[P|p]assword]PROMPT)if ret 0:print([-] Error Connecting)returnif ret 1:child.sendline(yes)ret child.expect([pexpect.TIMEOUT,[p|P]assword])if ret 0:print([-] Error Connecting)returnif ret 1:send_command(password)returnif ret 2:send_command(password)returnreturn child注针对ssh远程登录pexpect又派生出了pxssh类在ssh会话操作上再做一层封装其常用方法是login() #建立ssh连接logout() #断开ssh连接prompt() #等待系统提示符用于等待命令执行结束以上这篇python之pexpect实现自动交互的例子就是小编分享给大家的全部内容了希望能给大家一个参考也希望大家多多支持脚本之家。