python3.4用pexpect实现ssh登陆的方法

发布时间:2020-04-10编辑:脚本学堂
有关python3.4用pexpect实现ssh登陆的例子,pexpect是expect的python的一个实现,利用python来操作某些交互式的自动化任务,感兴趣的朋友参考下。

什么是Pexpect?

Pexpect 是 Don Libes 的 Expect 语言的一个 python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。

Pexpect 的使用范围很广,可以用来实现与 ssh、ftp 、telnet 等程序的自动交互;
可以用来自动复制软件安装包并在不同机器自动安装;
还可以用来实现软件测试中与命令行交互的自动化。

shell中过pexpect的话,应该熟悉这种工具,pexpect是expect的python的一个实现,利用python来操作某些交互式的自动化任务是非常方便的。

如何在linux下安装?
1,使用wget https://pypi.python.org/pypi?:action=show_md5&digest=0de72541d3f1374b795472fed841dce8 下载

2,使用tar -zxvf pexpect-3.3.tar.gz解压

3,使用python setup.py install进行安装

注意兼容问题,这里使用的python是3.4,所以要下载支持python3.4的pexpect,如果 python版本是2.x,则需要下载2.x的pexpect来使用。

模拟SSH登陆一台机器并打印磁盘情况,然后退出的例子:
 

复制代码 代码示例:
#!/usr/local/python3.4/bin/python3.4 
#
import pexpect 
 
ip="192.168.46.22" 
name="root" 
pwd="abc" 
 
#发送命令执行交互 
child=pexpect.spawn('ssh  %s@%s' % ("root",ip)  ) 

child.expect ('password:') 
 
child.sendline(pwd) 
 
child.expect('$') 
 
child.sendline('df -h') 
 
#发送命令 
child.sendline("exit") 
 
child.interact() 
 
#关闭pexpect 
child.close() 

执行结果:
 

Last login: Wed Oct 22 18:35:08 2014 from 192.168.46.31 
exit[root@ganglia ~]# df -h 
Filesystem                      Size  Used Avail Use% mounted on 
/dev/mapper/vg_ganglia-lv_root   30G  3.6G   25G  13% / 
tmpfs                           495M     0  495M   0% /dev/shm 
/dev/sda1                       485M   32M  428M   7% /boot 
[root@ganglia ~]# exit 
logout 
Connection to 192.168.46.22 closed.