python pexpect模块封装ssh

2014年10月19日 发表评论 阅读评论

很多时候需要批量在一批主机上执行某个操作时,利用python 可以很好的完成这个工作。如果在现网主机上没有部署自动化工具时,同时你又不想使用paramiko这样相对重量级的模块,你可以通过pexpect模块通过一个简单的spawn执行并交互完成一些简单的命令操作。

pexpect模块的安装

# wget https://pypi.python.org/packages/source/p/pexpect/pexpect-3.3.tar.gz
# tar zxvf pexpect-3.3.tar.gz
# cd pexpect-3.3
# python setup.py install 

示例:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pexpect
def ssh_cmd(ip, passwd, cmd):
    ret = -1
    ssh = pexpect.spawn('ssh root@%s "%s"' % (ip, cmd))
    try:
        i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5)
        if i == 0 :
            ssh.sendline(passwd)
        elif i == 1:
            ssh.sendline('yesn')
            ssh.expect('password: ')
            ssh.sendline(passwd)
        ssh.sendline(cmd)
        r = ssh.read()
        print r
        ret = 0
    except pexpect.EOF:
        print "EOF"
        ssh.close()
        ret = -1
    except pexpect.TIMEOUT:
        print "TIMEOUT"
        ssh.close()
        ret = -2
    return ret
ssh_cmd("192.168.0.102","361way","uptime")




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.