zoukankan      html  css  js  c++  java
  • python pexpect模块

    import pexpect
     pexpect.run("ls /tmp", withexitstatus=1)
    
    chk = pexpect.spawn("ls -l /tmp/")
    chk = pexpect.spawn("ls", ['-l', '/tmp/'])
    
    ssh_k = pexpect.spawn('ssh root@192.168.1.245 -p22')
    ssh_k.expect("password:")
    ssh_k.expect("[p,P]assword:")
    #匹配多种结果
    ssh_k.expect([pexpect.TIMEOUT, pexpect.EOF, "password"])

    pexpect向子程序发送指令

    def login_ssh_passwd(port="",user="",host="",passwd=""):
        '''函数:用于实现pexepect实现ssh的自动化用户密码登录'''
    
        # print 'ssh -p %s %s@%s' % (port,user, host)
        if  port and user and host and passwd:
            ssh = pexpect.spawn('ssh -p %s %s@%s' % (port,user, host))
            i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5)
            if i == 0 :
                ssh.sendline(passwd)
            elif i == 1:
                ssh.sendline('yes
    ')
                ssh.expect('password: ')
                ssh.sendline(passwd)
            index = ssh.expect (["#", pexpect.EOF, pexpect.TIMEOUT])
    
            if index == 0:
                print "logging in as root!"
                ssh.interact()
            elif index == 1:
                print "logging process exit!"
            elif index == 2:
                print "logging timeout exit"
        else:
            print "Parameter error!"
    def login_ssh_key(keyfile="",user="",host="",port=""):
        '''函数:用于实现pexepect实现ssh的自动化密钥登录'''
    
        if  port and user and host and keyfile:
            ssh = pexpect.spawn('ssh -i %s -p %s %s@%s' % (keyfile,port,user, host))
            i = ssh.expect( [pexpect.TIMEOUT,'continue connecting (yes/no)?'], timeout=2)
            # print '...................................',0
            if i == 1:
                ssh.sendline('yes
    ')
                index = ssh.expect (["#", pexpect.EOF, pexpect.TIMEOUT])
            else:
                index = ssh.expect (["#", pexpect.EOF, pexpect.TIMEOUT])
            if index == 0:
                print "logging in as root!"
                ssh.interact()
            elif index == 1:
                print "logging process exit!"
            elif index == 2:
                print "logging timeout exit"
        else:
            print "Parameter error!"
  • 相关阅读:
    Java StringBuilder、基本类型的包装类
    立个Flag不学好PHP誓不罢休
    LAMP搭建 转
    CentOS使用yum源中自带的rpm包安装LAMP环境
    CentOS RedHat YUM 源扩展补充(32位、64位均有)
    解决phpmyadmin上传文件大小限制的配置方法
    lanmp v2.5一键安装包发布(包括lamp,lnmp,lnamp安装)
    图像处理 jpg png gif svg
    NAT模式/路由模式/全路由模式 (转)
    网页制作中绝对路径和相对路径的区别
  • 原文地址:https://www.cnblogs.com/majianyu/p/12696514.html
Copyright © 2011-2022 走看看