Python Paramiko模块-exec_command() 和 invoke_shell() 两种操作方式

news/发布时间2024/5/14 14:09:36

前言

Paramiko 是 Python 语言的一个 SSH 客户端。可以远程连接Linux服务器,通过 python 对 Linux 进行操作,可以实现进行对远程服务器进行下载和上传文件操作。
exec_command()函数是将服务器执行完的结果一次性返回给你;
invoke_shell()函数类似shell终端,可以将执行结果分批次返回,看到任务的执行情况,不会因为执行一个很长的脚本而不知道是否执行成功

exec_command 和 invoke_shell 区别

invoke_shell 使用 SSH shell channel,而 exec_command 使用 SSH exec channel
shell channel
在正常情况下,SSH终端客户端(例如PuTTY)会使用shell channel

Shell channel执行登录Shell(就像您使用SSH终端客户端登录一样)。然后,shell程序将显示命令提示符,并等待客户端/用户键入命令。

Shell channel的目的是实现交互式Shell会话。那是很少做的事情。如果这样做,通常会希望使用终端仿真(Paramiko invoke_shell会执行此操作,但实际上可以在不进行终端仿真的情况下打开shell channel)。

exec channel

exec channel的目的是使命令执行自动化。因此,通常您不想使用终端仿真,以避免使用该命令执行诸如分页,着色和主要是交互式确认之类的操作。

exec命令将命令作为“参数”,通过用户的默认shell程序,而不是作为“登录”shell程序,这是主要的不同。当您在命令行上指定要执行的命令时,使用exec channel:

例如:

ssh user@host command

command就是发送完指令,连接就会断开。invoke_shell则是长连接,保持状态。

exec_command() 操作

import paramikossh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='127.1.1.12',port=22,username='root',password='aa**********',timeout=5
)while True:cmdline = input("command: ")stdin, stdout, stderr = ssh.exec_command(cmdline)for row in stdout.readlines():row = row.replace('\r', '').replace('\n', '').replace('\t', '')print(row)

invoke_shell() 操作

代码示例:

import paramiko# 建立一个socket
trans = paramiko.Transport(('127.0.1.66', 22))
# 启动一个客户端
trans.start_client()# 如果使用用户名和密码登录
trans.auth_password(username='root', password='aa********')
# 打开一个通道
channel = trans.open_session()
# 获取终端
channel.get_pty()
# 激活终端,这样就可以登录到终端了,就和我们用类似于xshell登录系统一样
channel.invoke_shell()
results = channel.recv(1024000)
print(f"输出1: {results.decode()}")channel.send("ll\n")
while True:results2 = channel.recv(1024000)print(f"输出2: {results2.decode()}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/AcTA/1261.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

Paddlepaddle使用自己的VOC数据集训练目标检测(0废话简易教程)

一 安装paddlepaddle和paddledection(略) 笔者使用的是自己的数据集 二 在dataset目录下新建自己的数据集文件,如下: 其中 xml文件内容如下: 另外新建一个createList.py文件: # -- coding: UTF-8 -- imp…

C++:const关键字

一、const成员变量(常成员变量) 1、只能使用初始化列表对常成员变量进行初始化; 2、常成员变量可以被访问,但是不能被修改; 3、类中所有构造函数都必须在初始化列表对常成员函数进行初始化(包括拷贝构造,移动构造)。 声明&am…

【数据结构】每天五分钟,快速入门数据结构(二)——链表

目录 一 构建一个单向链表 二 特点 三 时间复杂度 四 相关算法 1.判断链表是否成环及成环位置 2.链表反转 五 Java中的LinkedList 类 1.使用 2.LinkedList 方法 一 构建一个单向链表 // 设计链表结构class ListNode {int val;ListNode next;ListNode(){}ListNode(int…

《Solidity 简易速速上手小册》第1章:Solidity 和智能合约简介(2024 最新版)

文章目录 1.1 Solidity 的起源和重要性1.1.1 基础知识解析1.1.2 重点案例:去中心化金融 (DeFi) 平台案例 Demo:简易借贷平台 1.1.3 拓展案例 1:NFT 市场案例 Demo:简易 NFT 市场 1.1.4 拓展案例 2:智能合约管理的投票系…

vscode 无法远程连接waiting the server log

目录 问题描述: 问题解决: 问题描述: 使用vscode软件,远程连接曙光,一段时间没连接,再次连接发现使用vscode连接不上,但是网页版可以正常连接。 问题解决: vscode版本不能>1.…

2024PMP备考-高质量PMP真题和很详细解析(3)

本专题,华研荟专门为大家讲解最近两年在中国大陆、香港、澳门地区的PMP考试真题,并且提供比较详细的解析,让大家知其然,还知其所以然。帮助大家最后20天有效冲刺,一次性3A通过2024年PMP考试。 2024年PMP考试新考纲-近年…

基于协同过滤的时尚穿搭推荐系统

项目:基于协同过滤的时尚穿搭推荐系统 摘 要 基于协同过滤的时尚穿搭推荐系统是一种能自动从网络上收集信息的工具,可根据用户的需求定向采集特定数据信息的工具,本项目通过研究服饰流行的分析和预测的分析和预测信息可视化时尚穿搭推荐系统…

【安卓基础2】简单控件

🏆作者简介:|康有为| ,大四在读,目前在小米安卓实习,毕业入职。 🏆安卓学习资料推荐: 视频:b站搜动脑学院 视频链接 (他们的视频后面一部分没再更新,看看前面…

祖龙娱乐 x Incredibuild

关于祖龙娱乐 祖龙娱乐有限公司(下文简称“祖龙娱乐”)是一家总部位于北京的移动游戏开发公司,成立于 2014 年,拥有成功的大型多人在线角色扮演游戏移动游戏组合,如《六龙争霸》、《梦幻诛仙》和《万王之王 3D》。公司…

小程序域名可以使用免费的SSL证书吗?

对于小程序域名而言,选择何种类型的SSL证书主要取决于小程序域名的具体情况。如果小程序域名是单独的域名,那么可以选择最为常见的免费单域名证书;如果小程序是公司主域名的子域名,则可以选择免费的通配符证书,一张证书…

HCIA-HarmonyOS设备开发认证V2.0-IOT硬件子系统-WatchDog

目录 一、 WATCHDOG 概述功能简介基本概念 二、WATCHDOG 模块相关API三、WATCHDOG HDF驱动开发3.1、开发步骤(待续...) 坚持就有收获 一、 WATCHDOG 概述 功能简介 看门狗(Watchdog),又称看门狗计时器(Watchdog timer&#xff0…

ELK入门(一)-Elasticsearch(docker版)

Elasticsearch Elasticsearch安装(docker) 下载Elasticsearch 查询镜像 [rootlocalhost elk]# docker search elasticsearch NAME DESCRIPTION STARS OFFICIAL AUTOMATED elasticsearch …

请介绍一下美国德克萨斯州历史地理与环境经济文化与社会教育与科研结论请介绍一下罗格斯大学(Rutgers University)校园与分校学术项目研究与创新学

目录 请介绍一下美国德克萨斯州 历史 地理与环境 经济 文化与社会 教育与科研 结论 请介绍一下罗格斯大学(Rutgers University) 校园与分校 学术项目 研究与创新 学生生活 社会贡献 请介绍一下德州A&M大学系统 组成成员 教育与研究 …

奶茶点餐|奶茶店自助点餐系统|基于微信小程序的饮品点单系统的设计与实现(源码+数据库+文档)

奶茶店自助点餐系统目录 目录 基于微信小程序的饮品点单系统的设计与实现 一、前言 二、系统功能设计 三、系统实现 1、商品信息管理 2、商品评价管理 3、商品订单管理 4、用户管理 四、数据库设计 1、实体ER图 2、具体的表设计如下所示: 五、核心代码 …

服务器取证——网络配置

开启虚拟机,我刚开始的网络配置如下: 只有这么几行,是没有配置IP、子网掩码和网关的 以下是配置过程: 查看宝塔面板默认信息 bt 14登录宝塔面板,查看静态IP 得知是在192.168.197.xxx的这个网段,最好就…

Linux超详细笔记

文章目录 Linux学习笔记操作系统Linux初识Linux的诞生Linux内核Linux发行版 虚拟机VMware安装远程连接Linux系统FinalShellFinalShell连接Linux WSL配置UbuntuLinux常用命令1.入门2.ls命令cd命令3.pwd命令4.相对路径和绝对路径5.mkdir命令6.文件操作命令(1&#xff…

Laravel01 课程介绍以及Laravel环境搭建

Laravel01 课程介绍 1. Laravel2. mac开发环境搭建(通过Homebrew)3. 创建一个项目 1. Laravel 公司中面临着PHP项目与Java项目并行,所以需要我写PHP的项目,公司用的框架就是Laravel,所以在B站上找了一门课学习。 课程地址 2. mac开发环境搭…

嵌入式STM32 单片机 GPIO 的工作原理详解

STM32的 GPIO 介绍 GPIO 是通用输入/输出端口的简称,是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 以 STM32F103ZET6 芯片为例子,该芯片共有 144 脚芯片&#xff0c…

四非保研之旅

大家好,我是工藤学编程,虽有万分感概,但是话不多说,先直接进入正题,抒情环节最后再说,哈哈哈 写在开头 我的分享是来给大家涨信心的,网上的大佬们都太强了,大家拿我涨涨信心&#…

消息队列RabbitMQ-使用过程中面临的问题与解决思路

消息队列在使用过程中会出现很多问题 首先就是消息的可靠性,也就是消息从发送到消费者接收,消息在这中间过程中可能会丢失 生产者到交换机的过程、交换机到队列的过程、消息队列中、消费者接收消息的过程中,这些过程中消息都可能会丢失。 …
推荐文章