• paramiko_su_root


    #coding=utf8
    import paramiko
    import time
    import logging
    
    '''
    if user root,can not login,must use user xx and then switch to root
    
    not root ,then run
    
    '''
    
    def  _conn_root(ip,port,username,passwd,cmd):
        s = paramiko.SSHClient()
        s.load_system_host_keys()
        s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        try:
        #此处写入一个用于登录的用户
            s.connect(hostname=ip, port=int(port), username='xx', password='xx')
        except:
            logging.info('err: can not conn %s ,pls check %s and password of xx',(ip,ip))
    
        if username == 'root' or  'xx':
            ssh = s.invoke_shell()
            time.sleep(1)
            if username=='xx':
               ssh.send('su - xx
    ')
            else:
                ssh.send('su -
    ')
            buff = ''
            while not buff.endswith('Password: '):
                resp = ssh.recv(2048)
                buff += resp
            ssh.send(passwd)
            ssh.send('
    ')
            buff = ''
            while not buff.endswith('# '):
                resp = ssh.recv(2048)
                buff += resp
            ssh.send(cmd)
            ssh.send('
    ')
            buff = ''
            time.sleep(1)
            resp = ssh.recv(2048)
            resp = ''
            while not buff.endswith('# '):
                resp = ssh.recv(2048)
                print resp
                buff += resp
            s.close()
            result = buff
        else:
            stdin, stdout, stderr = s.exec_command(cmd)
            result = stdout.read()
            s.close()
    
        return result
    
    def _conn_nomal(ip,port,username,passwd,cmd):
        s = paramiko.SSHClient()
        s.load_system_host_keys()
        s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        try:
           s.connect(hostname=host, port=int(port), username=username, password=password)
        except:
            logging.info('err: can not connect %s ,pls check %s and user && password',(ip,ip))
        #'get result'
        stdin, stdout, stderr = s.exec_command(cmd)
        result = stdout.read()
        s.close()
        return result
    
    
    def Connect(ip,port=22,username='xx',passwd='xx',cmd='echo '):
    
            if username=='root' or 'xx':
                return _conn_root(ip,port,username,passwd,cmd)
            else:
                return _conn_nomal(ip,port,username,passwd,cmd)
    

      

  • 相关阅读:
    面向过程--面向对象
    shiro有哪些组件?
    Redis的特点什么是?
    Spring Boot 有哪些优点?
    什么是 JavaConfig?
    HashMap和Hashtable的区别
    深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
    Linux指令--tar,gzip
    JQuery 学习总结及实例
    $(this) 和 this 关键字在 jQuery 中有何不同?
  • 原文地址:https://www.cnblogs.com/EWWE/p/8018850.html
Copyright © 2020-2023  润新知