Pexpect 是一个用来启动子程序并对其进行自动控制的 Python 模块,它可以用来和像 ssh、ftp、passwd、telnet 等命令行程序进行自动交互。本文介绍 Pexpect 的主要用法和在实际应用中的注意点。 Python 语言的爱好者,系统管理人员,部署及测试人员都能使用 Pexpect 在自己的工作中实现与命令行交互的自动化。
使用pexpect的需求是想通过ssh远程到机器上,自动执行一些命令。查了一下发现pexpect正好可以做这个事情。
pexpect的dome代码:
#!/usr/bin/python
import os,re,sys,time
sys.path.append('/u/yli108/myfile/pexpect-2.4/build/lib')
import pexpect
cmd = 'ssh '+username+'@'+hostname
foo = pexpect.spawn(cmd) 产生一个实例
foo.expect(['Password:','Continue*'],timeout = 5) #期望出现“Password:”提示符
foo.sendline('reset123') #发送密码
foo.expect(['Using TERM=dattern'],timeout = 10)
print foo.before
foo.sendline("ls -la") #发送命令
print foo.before
foo.close()
pxssh的demo代码:
#!/usr/bin/python
import os,re,sys,time
sys.path.append('/u/yli108/myfile/pexpect-2.4/build/lib')
import pexpect
import pxssh
cmd=['ls','ls -la','ls','ls -la']
foo = pxssh.pxssh() #创建一个实例
foo.login('hostname','username','password',original_prompt=']') #ssh登录
print foo.before #显示登录信息
for i in cmd[1:3]:
foo.sendline(i)
foo.prompt() #匹配提示符
print foo.before #打印返回的信息
foo.logout()