有关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 U
sed 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.