如何Python3.4使用pexpect来实现SSH登陆

阅读更多


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进行安装




ok,上面的步骤,执行完成之后,我们就可以来写个demo测试一下了,另外注意兼容问题,散仙的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.
[root@master 20141022]# 



本文只是一个简单的例子,可能觉得没有必要使用python来完成,但当系统管理规模一旦大起来的话,使用python来自动化管理是非常轻松的一件事。





你可能感兴趣的:(python,pexpect,自动化登陆)