zoukankan      html  css  js  c++  java
  • 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)
    

      

  • 相关阅读:
    IOS 学习笔记(2) 视图UINavigationController
    [转] IOS中AppDelegate中的生命周期事件的调用条件
    IOS 学习笔记(1) 视图UIViewController
    IOS 单例模式的学习
    object-c 协议(Protocols)和代理(Delegation)的学习
    object-c 内存管理机制的学习
    Object-c Block的使用及说明
    KVO 的使用和举例
    魔豆电子相框
    魔豆应用开发傻瓜书——helloworld
  • 原文地址:https://www.cnblogs.com/EWWE/p/8018850.html
Copyright © 2011-2022 走看看