#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\n')
else:
ssh.send('su -\n')
buff = ''
while not buff.endswith('Password: '):
resp = ssh.recv(2048)
buff += resp
ssh.send(passwd)
ssh.send('\n')
buff = ''
while not buff.endswith('# '):
resp = ssh.recv(2048)
buff += resp
ssh.send(cmd)
ssh.send('\n')
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)

  

paramiko_su_root的更多相关文章

随机推荐

  1. vue 添加 fastclick的支持

    fastclick:处理移动端click事件300毫秒延迟 1.兼容性iOS 3及更高版本的移动SafariiOS 5及更高版本的ChromeAndroid上的Chrome(ICS)Opera Mob ...

  2. 16.04 下 ufw 防火墙的的开启、禁用、开放端口、关闭端口

    16.04 下的 ufw 防火墙相关操作使用ufw命令.通过ufw --help可以查看所有相关命令. 打开防火墙 sudo ufw enable 重启防火墙 sudo ufw reload 打开指定 ...

  3. NET VBCSCompiler.exe占用100%,造成项目卡顿的的解决方法

    1)服务器环境 最低配 的window server 2008 r2, 配置低容易发现问题‘ 2)事件描述 :项目打开缓慢,查询列表卡顿 3)问题分析:排除代码问题, ->打开服务器任务管理器 ...

  4. [转载]C++、C#写的WebService相互调用

    [转载]C++.C#写的WebService相互调用   首先感谢永和兄提供C++的WebService服务器端及客户端,并且陪我一起熬夜:然后是火石和我做接口的兄弟,虽然都不知道你叫什么,如果没有你 ...

  5. java was started but returned exit code =-805306369的处理方法

    Myeclipse出现java was started but returned exit code =-805306369的错误,如图: 解决方法: 换个workspaces:换个工作目录,估计估计 ...

  6. 趣味ACM题——圣骑士的斩杀

    题目来源于山东省第七届ACM大学生程序设计竞赛(Execution of Paladin) 题目描述 鱼人是炉石里的一支强大种族,在探险者协会里,圣骑士有了一张新牌,叫亡者归来,效果是召唤本轮游戏中7 ...

  7. 全国高校绿色计算大赛 预赛第二阶段(Python)

    第1关统计分数的麻烦 class Task: def get_lost_scores(self, scores): s = "" index = [1 for i in range ...

  8. 【转】vfork 和 fork的区别

    fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别: 1.  fork  ():子进程拷贝父进程的数据段,代码段     vfork ( ):子进程与父进程共享数据段 ...

  9. build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing

    maven test项目时遇到一下错误 Some problems were encountered while building the effective model for cn.temptat ...

  10. 关于c# .net爬虫

    刚开始听到爬虫这两个字眼的时候感觉挺稀奇的,之前并没有接触过爬虫,正好这会手上没事,于是便百度了一下. 1.网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种 ...