使用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...python

相關文章
相關標籤/搜索