初学Pexpect
概述
Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。 Pexpect 的使用范围很广,可以用来实现与 ssh、ftp 、telnet 等程序的自动交互;可以用来自动复制软件安装包并在不同机器自动安装;还可以用来实现软件测试中与命令行交互的自动化。
下载
Pexpect 可以从:
https://sourceforge.net/projects/pexpect/
https://pypi.python.org/pypi/pexpect/#downloads
这两个网站下下载,一个是2.3的一个是最新的4.1的至于区别,暂时还没有研究。
安装
安装异常的简单
[root@test ~]# tar -zxvf pexpect-2.3.tar.gz [root@test ~]# cd pexpect-2.3 [root@test pexpect-2.3]# python setup.py install --注意需要用root权限执行此句
下面就写一个简单的示例吧,网上有很多相同的示例但是有人还是不知道怎么执行,我开始学的时候也是研究了一下才看明白
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import pexpect 5 6 def ssh_cmd(ip, passwd, cmd): --需要简单说明下cmd是你想执行的命令 7 ret = -1 8 ssh = pexpect.spawn('ssh sm01@%s "%s"' % (ip, cmd)) --也可以把用户名写成变量的形式 9 try: 10 i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5) 11 if i == 0 : 12 ssh.sendline(passwd) 13 elif i == 1: 14 ssh.sendline('yes\n') 15 ssh.expect('password: ') 16 ssh.sendline(passwd) 17 ssh.sendline(cmd) 18 r = ssh.read() 19 print r 20 ret = 0 21 except pexpect.EOF: 22 print "EOF" 23 ssh.close() 24 ret = -1 25 except pexpect.TIMEOUT: 26 print "TIMEOUT" 27 ssh.close() 28 ret = -2 29 return ret 30 ssh_cmd("***.***.***.***","password","df -h") --ssh相应的主机IP,密码和想要运行的命令。
还会持续更新,今天之学了这么一点~嘿嘿~