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)
    

      

  • 相关阅读:
    Spark SQL概述
    Spark编程进阶篇
    数据的读取与保存
    键值对RDD数据分区器
    Spark master的HA实战案例
    生产环境中zookeeper分布式集群部署实战案例
    Spark的RDD编程实战案例
    部署Spark历史服务器
    Spark的Standalone运行模式部署实战案例
    将开发的程序打包到正式环境中运行实战篇
  • 原文地址:https://www.cnblogs.com/EWWE/p/8018850.html
Copyright © 2011-2022 走看看