使用python-pexpect登录linux系统并发送命令

#!/usr/bin/python
# -*- coding: utf-8 -*-
# filename: pexpect_test.py

import pexpect,time,sys
def sendCommt():
    demo = open("result.txt", "ab")
    demo.write('==========Log Tile: demo==========\n')
    print user
    child = pexpect.spawn('ssh %s@%s' % (user,ip))
    while True:
        i = child.expect(patterns)
        if i == CONTINUES:
            child.sendline(flag)
        elif i == PASSWD:
            child.sendline(passwd)
        elif i == OPFLAG:
            break
    for cmd in cmds:
        time.sleep(2)
        p = pexpect.spawn(cmd)
        p.logfile = demo
        p.write('=====================\n')
        p.expect(pexpect.EOF)
        print cmd
    demo.close()
    child.close()

if __name__ == '__main__':
    user = 'demo'
    ip = 'x.x.x.x'
    passwd = '1'
    cmds = ['ps','ls','pwd','ifconfig','date']
    patterns = ['Are you sure you want to continue connecting (yes/no)?','[Pp]assword:','#']
    CONTINUES,PASSWD,OPFLAG = range(len(patterns))
    flag = 'yes'
    group = '1'
    try:
        sendCommt()
    except pexpect.TIMEOUT:  
        print "TIMEOUT" 
    except pexpect.EOF:
        print "EOF"

参考文档:
http://www.ibm.com/developerworks/cn/lin…

    原文作者:sasuke0211
    原文地址: https://segmentfault.com/a/1190000004834071
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞