iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >第二篇:ssh.invoke_shell
  • 652
分享到

第二篇:ssh.invoke_shell

第二篇sshinvoke_shell 2023-01-30 22:01:47 652人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

接上一篇:按照上一篇的方式,在没有对ssh.invoke_shell()执行后的登录提示符进行判断的话,那边有部分机器就回因为返回为空导致程序卡死。 正常机器  ssh.recv(9999)  命令返回内容: b'Last login:

接上一篇:按照上一篇的方式,在没有对ssh.invoke_shell()执行后的登录提示符进行判断的话,那边有部分机器就回因为返回为空导致程序卡死。

正常机器  ssh.recv(9999)  命令返回内容:

b'Last login: Sat Aug 18 22:06:17 2018 from 172.37.100.111\r\r\n[cattsoft@ZB_KT_MAS2 ~]$ '
b'export LANG=en_US.UTF-8 \r\n[cattsoft@ZB_KT_MAS2 ~]$ export LANGUAGE=en \r\n[cattsoft@ZB_KT_MAS2 ~]$ su - \r\nPassWord: '

      程序的模拟登陆过程如下(以下图片内容为ssh.recv(9999) 命令接收返回值解码后的结果):

     

异常机器ssh.recv(9999)  命令返回内容:

b'export LANG=en_US.UTF-8 \r\n'
b'export LANGUAGE=en \r\nsu - \r\nLast login: Sat Aug 18 21:42:09 from 172.16.112.2\r\n[cattsoft@trancache01 ~]$ '

      程序的模拟登陆过程如下(以下图片内容为ssh.recv(9999) 命令接收返回值解码后的结果)

     

 

如上,按照原来的循环方式,循环无法判断Password:位置,所以异常机器此时就回出现卡死现象,解决此问题的做法:在执行命令前,先判断一次登陆符:“$”,然后在执行命令。

def verification_ssh(host,username,password,port,root_pwd,cmd):
    s=paramiko.SSHClient()
    s.load_system_host_keys()
    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    s.connect(hostname = host,port=int(port),username=username, password=password)

    if username != 'root':
        ssh = s.invoke_shell()
        time.sleep(0.1)

#先判断提示符,然后下一步在开始发送命令,这样大部分机器就都不会出现问题 buff = '' while not buff.endswith('$ '): resp = ssh.recv(9999) # print(resp) buff += resp.decode('utf8') time.sleep(0.1) print('获取登录后的提示符:%s' %buff) ssh.send(' export LANG=en_US.UTF-8 \n') #解决错误的关键,编码问题 ssh.send('export LANGUAGE=en \n') ssh.send('su - \n') buff = "" while not buff.endswith('Password: '): #true resp = ssh.recv(9999) print(resp) buff +=resp.decode('utf8') print('hhhhh') print(buff) ssh.send(root_pwd) ssh.send('\n') buff = "" # n = 0 while not buff.endswith('# '): # n += 1 resp = ssh.recv(9999) print(resp) buff +=resp.decode('utf8') # print(n) # if n >=3: # break # print(buff) ssh.send('sh /tmp/check/101.sh') #放入要执行的命令 ssh.send('\n') buff = '' # m = 0 while not buff.endswith('# '): resp = ssh.recv(9999).decode() buff +=resp # m += 1 # print(m) result = buff # print(type(result)) # print(result) s.close() if __name__ == "__main__": verification_ssh('测试IP地址', '普通账号', '普通账号的密码', '52222', 'root密码', 'id')

 上一篇:https://www.cnblogs.com/apff/p/9484939.htmlpython如何实现普通用户登录服务器后切换到root用户再执行命令遇到的错误解决 )

 

--结束END--

本文标题: 第二篇:ssh.invoke_shell

本文链接: https://www.lsjlt.com/news/179242.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 第二篇:ssh.invoke_shell
    接上一篇:按照上一篇的方式,在没有对ssh.invoke_shell()执行后的登录提示符进行判断的话,那边有部分机器就回因为返回为空导致程序卡死。 正常机器  ssh.recv(9999)  命令返回内容: b'Last login: ...
    99+
    2023-01-30
    第二篇 ssh invoke_shell
  • SQL Profile(第二篇)
    通过SQL Tuning Advisor使用SQL profile 在11GR2上SQL Tuning Advisor已经变得非常好用,我非常喜欢将一些非常复杂的SQL语句交给SQL Tunin...
    99+
    2022-10-18
  • Adaptive Cursor Sharing(第二篇)
    选择率和硬解析 我们上面提到了,在v$sql_cs_histogram视图中,如果此游标的3个桶中出现了两个桶中的count都有非0值,那么此后的解析都要窥探绑定变量的值计算谓词选择率,如果计算选...
    99+
    2022-10-18
  • robotFramework第二篇之关键
    lesson.robot 1 *** Keywords *** 2 打开谷歌浏览器并访问百度首页 3 Log 打开浏览器,输入http://www.baidu.com,进入百度首页 4 5 输入用户名 6 ...
    99+
    2023-01-30
    第二篇 关键 robotFramework
  • 【Python之旅】第五篇(二):Pyt
        前面第五篇(一)中的一个Socket例子其实就是单线程的,即Server端一次只能接受来自一个Client端的连接,为了更好的说明socket单线程和阻塞模式,下面对前面的例子做修改。1.单线程+阻塞+交互式    前面的例子是单线...
    99+
    2023-01-31
    之旅 第五篇 Python
  • 【Python之旅】第四篇(二):Pyt
        在Python程序的执行过程中,难免会出现异常的情况,如果做的是跟用户交互的程序,当用户输入不可接受的内容时,在可预见的范围内,我们当然是希望可以给用户一些提示,而不是原来Python内置异常中的那些提示语句,毕竟那些语句只适合给程...
    99+
    2023-01-31
    之旅 第四篇 Python
  • 【Python之旅】第二篇(一):Pyt
    说明:    主要是file()和open()函数的使用,但在查open()函数的帮助时,会有下面的说明:>>> help(open) …… Open a file using the file() type, retur...
    99+
    2023-01-31
    之旅 第二篇 Python
  • Python 学习日记第二篇 -- 列表
    一、列表    列表是一个可以包含所有数据类型的对象的位置有序集合,它是可以改变的。   1、列表的序列操作(Python3)>>> one_list = [1,2,3,4] >>> two_list =...
    99+
    2023-01-31
    第二篇 日记 列表
  • Java面试题冲刺第二天--Redis篇
    目录面试题1:为什么要用 Redis ?业务在哪块儿用到的?正经回答:深入追问: 追问1:Redis里有哪些数据类型?追问2:Redis与Memcached有哪些区别?追问3:那Re...
    99+
    2022-11-12
  • Python成长之路第二篇(3)_字典的
    字典的置函数用法(字典dict字典中的key不可以重复)class dict(object):"""dict() -> new empty dictionarydict(mapping) -> new dictionary in...
    99+
    2023-01-31
    字典 第二篇 成长之路
  • 第十二篇 1+X考证 Web前端测试题PHP篇(新)
     单选题  1、以下关于PHP面向对象的说法错误的是( A ) A、PHP可以多重继承,一个类可以继承多个父类 B、PHP使用new运算符来获取一个实例对象 C、一个类可以在声明中用extends关键字继承另一个类的方法和属性 D、...
    99+
    2023-09-06
    php 开发语言 前端
  • Java基础第二篇方法与数据成员
    目录1、调用同一对象的数据成员2、方法的参数列表3、调用同一对象的其他方法4、数据成员初始化5、总结上一篇文章Java基础 从HelloWorld到面向对象 1、调用同一对象的数据成...
    99+
    2022-11-12
  • openCV第一篇
    文章目录 前言:计算机眼中的图片  1. 图片的读取与显示 1.1 图片的读取  1.2 显示的图片 1.2.1 显示原始图片  1.2.2 灰度图 1.3 BGR转换成灰度图、RGB 2. 保存图片 3. 视频的读取与显示 4. 截取图像...
    99+
    2023-09-11
    opencv 计算机视觉 python
  • 第七篇:suds.TypeNotFoun
    想要用Python的suds模块调用webservice地址做自动测试,但是找了很多方法都失败了,最终找到另外一个模块可以作为客户端访问服务器地址。 1.针对非安全的http from zeep import Client url = "...
    99+
    2023-01-30
    第七篇 suds TypeNotFoun
  • 第一篇python
    1、CentOS Linux release 7.2.1511 (Core) 升级python2.7.5到3.6.12、wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tg...
    99+
    2023-01-31
    第一篇 python
  • 二:原神本地服务器(sifu)搭建环境配置教程第二篇
    安装jdk 双击msi安装文件,一路到底就欧克,傻瓜式安装。  安装数据库 也是一路yes,后面在安装界面会有一个询问你是否安装最新版,可选可不选,不选安装会快些 中间提示服务启动不成功也无所谓,可以忽略。后面会教你怎么开  安装代理器...
    99+
    2023-09-08
    windows 服务器
  • 第一篇随笔
    1 #元类 2 class myType(type): 3 def __init__(self, obj_name, base_tuple, attr_dict): 4 print(self, obj...
    99+
    2023-01-30
    第一篇 随笔
  • 第一篇 第四节 python2和p
       电脑同时安装了python2和python3,那么怎样才能自由的使用自己想用的解释器,而不是卸载掉其中一个,才可以使用,由于之前第一篇第二节已介绍过python3.6.5的安装以及环境变量的配置,那python2安装的方法步骤也类似...
    99+
    2023-01-31
    第四节 第一篇
  • 死磕MyCat使用篇之第一篇
    基本概念 直接介绍概念太枯燥了,还是拿个和背景篇相似的例子介绍业务场景:客户完成下单,快递员接受并更新运单状态,客户可以随时查看运单状态的任务。一票快递可能有多个子母件。同时,我们需要标记每个运单的状态,运...
    99+
    2022-10-18
  • php——三篇夯实根基第一篇
    目录 前言: 一、基础语法 (一)语言标记 (二)指令分隔符 (三)注释 (四)HTML和PHP区别 (五)PHP换行 (六)'echo'与'print'回显命令区别 (七)关键字 (八)基础语法实例说明  二、变量 (一)变量包含的三个内...
    99+
    2023-08-31
    php基础 php PHP
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作