Paramiko 使用教程
目录
- 简介
- 安装 Paramiko
- 连接到远程服务器
- 执行远程命令
- 文件传输
- 示例
简介
Paramiko 是一个基于 Python 的 SSH 客户端库,它提供了在网络上安全传输文件和执行远程命令的功能。本教程将介绍 Paramiko 的基本用法,包括连接到远程服务器、执行命令、文件传输等常见操作。
安装 Paramiko
可以使用 pip 命令安装 Paramiko:
pip install paramiko
连接到远程服务器
创建一个 SSHClient 对象,使用 connect() 方法连接到远程服务器:
# 创建 SSHClient 实例
ssh_client = paramiko.SSHClient()
# 允许连接不在 known_hosts 文件中的主机
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接到远程服务器
ssh_client.connect(hostname, port, username, password)
执行远程命令
使用 exec_command() 方法执行远程命令,并获取输入、输出和错误流:
# 执行远程命令
stdin, stdout, stderr = ssh_client.exec_command(command)
# 向执行命令写入信息(一般交互式命令会用到)
stdin.write(content)
# 读取执行命令的输出信息
output = stdout.read().decode()
# 读取执行命令的报错信息
error = stderr.read().decode()
文件传输
创建一个 SFTPClient 对象,使用 put() 和 get() 方法上传和下载文件:
# 创建 SFTPClient 实例
sftp_client = ssh_client.open_sftp()
# 上传文件
sftp_client.put(local_path, remote_path)
# 下载文件
sftp_client.get(remote_path, local_path)
示例
下面是一个完整示例,演示了 Paramiko 的基本用法,包括连接到远程服务器、执行命令、文件传输等常见操作:
import paramiko
import timedef ssh_connect(hostname, port, username, password):# 创建 SSHClient 实例ssh_client = paramiko.SSHClient()# 允许连接不在 known_hosts 文件中的主机ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 连接到远程服务器ssh_client.connect(hostname, port, username, password)return ssh_clientdef ssh_vim(ssh_client, path):# 执行 vim 命令,并获取输入、输出和错误流stdin1, stdout1, stderr1 = ssh_client.exec_command(f'vim {path}')# 进入插入模式stdin1.write('i')# 插入文本stdin1.write('Hello World!')# esc 键,退出插入模式stdin1.write('\x1b')# 保持并退出stdin1.write(':wq\n')# 关闭执行命令的输入流stdin1.close()# 等待 3 秒后,再查看文件内容,太快可能获取不到最新的文件内容time.sleep(3)# 执行 cat 命令,并获取输入、输出和错误流stdin2, stdout2, stderr2 = ssh_client.exec_command(f'cat {path}')# 读取执行命令的输出信息和错误信息,并输出到控制台print(stdout2.read().decode(), stderr2.read().decode())def sftp_put(ssh_client, local_path, remote_path):# 创建 SFTPClient 实例sftp_client = ssh_client.open_sftp()# 上传文件sftp_client.put(local_path, remote_path)# 关闭 SFTP 连接sftp_client.close()def sftp_get(ssh_client, remote_path, local_path):# 创建 SFTPClient 实例sftp_client = ssh_client.open_sftp()# 下载文件sftp_client.get(remote_path, local_path)# 关闭 SFTP 连接sftp_client.close()if __name__ == '__main__':# 连接到远程服务器ssh_client = ssh_connect(hostname, port, username, password)# 执行 vim 命令ssh_vim(ssh_client, path)# 上传文件sftp_put(ssh_client, local_path, remote_path)# 下载文件sftp_get(ssh_client, remote_path, local_path)# 关闭 SSH 连接ssh_client.close()相关文章:
Paramiko 使用教程
目录 简介安装 Paramiko连接到远程服务器执行远程命令文件传输示例 简介 Paramiko 是一个基于 Python 的 SSH 客户端库,它提供了在网络上安全传输文件和执行远程命令的功能。本教程将介绍 Paramiko 的基本用法,包括连接到远程服务器、执行命令、文件传输…...
第一节:Vben Admin 最新 v5.0初体验
系列文章目录 基础篇 第一节:Vben Admin介绍和初次运行 第二节:Vben Admin 登录逻辑梳理和对接后端准备 第三节:Vben Admin登录对接后端login接口 第四节:Vben Admin登录对接后端getUserInfo接口 第五节:Vben Admin权…...
ARCGIS国土超级工具集1.5更新说明
ARCGIS国土超级工具集V1.5版本更新说明:因作者近段时间工作比较忙及正在编写ARCGISPro国土超级工具集(截图附后)的原因,故本次更新为小更新(没有增加新功能,只更新了已有的工具)。本次更新主要修…...
CNN:卷积到底做了什么?
卷积神经网络(Convolutional Neural Network, CNN) 是一种深度学习模型,专门用于处理具有网格结构的数据(如图像、视频等)。它在计算机视觉领域表现卓越,广泛应用于图像分类、目标检测、图像分割等任务。CN…...
AI应用开发之扣子第二课-AI翻译(第1节/共2节)
简介 共分为两节介绍,内容简单易懂,步骤详细,可以避免很多坑,建议直接上手操作(预估30分钟)。 AI应用开发之扣子第二课学习-AI翻译(第1节/共2节):业务逻辑实现 AI应用…...
linux学习 3.用户的操作
用户 建议在系统操作的时候不要一直使用root用户,因为root用户具有最高权限,你可能因为某些操作影响了你的系统,采用子用户则可以避免这一点 这里的学习不用太深入,掌握如何创建删除切换即可(除非你要做详细的用户管理࿰…...
leetcode 139. Word Break
这道题用动态规划解决。 class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> wordSet;for(string& word:wordDict){wordSet.insert(word);}int s_len s.size();//s的下标从1开始起算,dp[j]…...
Vue与React组件化设计对比
组件化是现代前端开发的核心思想之一,而Vue和React作为两大主流框架,在组件化设计上既有相似之处,也存在显著差异。本文将从语法设计、数据管理、组件通信、性能优化、生态系统等多个方向,结合实例详细对比两者的特点。 一、模板…...
Leetcode刷题 由浅入深之哈希表——242. 有效的字母异位词
目录 (一)字母异位词的C实现 写法一(辅助数组) (二)复杂度分析 时间复杂度 空间复杂度 (三)总结 【题目链接】242.有效的字母异位词 - 力扣(LeetCode) …...
自动化构建工具:makemakefile
在Windows中,我们写C代码或者C代码都需要用先找到一款合适的编译器,用来方便我们更好的完成代码,比如说vs2019,这些工具的特点是集成了多种开发所需的功能,如代码编辑、编译、调试、版本控制等,无需在不同的…...
刷题 | 牛客 - js中等10题(更ing)1/54知识点解答
知识点汇总: Array.from(要转换的对象, [mapFn], [thisArg ]):将类数组对象(Array-like)/可迭代对象(Iterable)转为真正的数组。 第二参 mapFn 是 类似 Array.prototype.map 的回调函数,加工…...
Ubuntu 20.04.6编译安装COMFAST CF-AX90无线网卡驱动
目录 0 前言 1 CF-AX90无线网卡驱动 1.1 驱动下载 1.2 驱动准备 2 编译安装驱动 2.1 拷贝驱动依赖到系统 2.2 驱动安装编译 3 重启 0 前言 COMFAST CF-AX90或者说AIC8800D80的Linux版本驱动不支持高版本的linux内核,实测目前仅支持最高5.15的内核。Ubuntu2…...
将python项目打包成Windows后台服务
前文,我开发了一个基于windows11与本地deepseek实现的语音助手,之前是通过CMD直接执行项目的main.py文件。但是这样不适合移植,现在想将其生成一个exe文件,以及部署成windows的后台服务。 关于语音助手的开发与发布,可以看的CSDN文章:一个基于windows11与本地deepseek实…...
PPT无法编辑怎么办?原因及解决方法全解析
在日常办公中,我们经常会遇到需要编辑PPT的情况。然而,有时我们会发现PPT文件无法编辑,这可能由多种原因引起。今天我们来看看PPT无法编辑的几种常见原因,并提供实用的解决方法,帮助你轻松应对。 原因1:文…...
安全用电基础知识及隐患排查重点
安全用电是电气安全的一个重要方面,作为普通人员,必须学会基础的用电知识和技巧,才能保障自己和家庭的安全。 以下是安全用电的基础知识及隐患排查重点: 一、基础知识 1.电压:单位为伏特(V)&a…...
Laravel 使用通义灵码 - AI 辅助开发提升效率
一、引言 Laravel 是 PHP 常用的一种后端开发框架,遵循 MVC(模型 - 视图 - 控制器)架构,以简洁、优雅的语法和强大的功能著称,旨在提升开发效率并简化复杂任务的实现。然而,它的开发习惯可能与传统的 PHP …...
签到功能---实现签到接口
文章目录 概要整体架构流程技术细节小结 概要 需求分析以及接口设计 由KEY的结构可知,要签到,就必须知道是谁在哪一天签到,也就是两个信息: 当前用户 当前时间 这两个信息我们都可以自己获取,因此签到时ÿ…...
JavaScript爬虫基础篇:HTTP 请求与响应
在互联网的世界里,数据无处不在。无论是新闻资讯、商品信息,还是社交媒体动态,这些数据都以各种形式存储在服务器上。而爬虫,就是我们获取这些数据的得力助手。今天,我们就来聊聊爬虫的基础——HTTP 请求与响应&#x…...
Python中的count()方法
文章目录 Python中的count()方法基本语法在不同数据类型中的使用1. 列表(List)中的count()2. 元组(Tuple)中的count()3. 字符串(String)中的count() 高级用法1. 指定搜索范围2. 统计复杂元素 注意事项 Python中的count()方法 前言:count()是Python中用于序列类型&a…...
LWIP_MQTT连接ONENET
前言: 使用正点原子STM32F407, LWIP,MQTT demo,验证LwIP的MQTT连接ONENET物联网平台,测试整个链路是否畅通,后面再详细分析LWIP移植和MQTT协议的使用。 26 基于 MQTT 协议连接 OneNET 服务器 本章主要介绍 lwIP 如何通过 MQTT 协议将设备连接到 OneNET…...
代码随想录刷题|Day20(组合总数,组合总数2、分割回文串)
回溯算法 Part02 组合总数 力扣题目链接 代码随想录链接 视频讲解 题目描述: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你…...
文件描述符(File Descriptor, FD)详解及利用方法
文件描述符(FD)是 Linux/Unix 系统中用于访问文件、管道、套接字等 I/O 资源的整数标识符。每个进程默认打开 3 个标准文件描述符: FD名称默认绑定设备用途0stdin键盘标准输入(读取数据)1stdout终端屏幕标准输出&…...
Minecraft盔甲机制详解(1.9之后)
Minecraft的盔甲有很多种,但是评判盔甲的好坏,通常玩家会使用一个变量来评判——护甲值 护甲值的机制很简单,一格护甲值 (半个灰色的衣服图标)最多能提供4%的防御 护甲值在不开作弊的生存模式理论上限是20点…...
ArcGIS Desktop使用入门(四)——9版本与10版本区别
系列文章目录 ArcGIS Desktop使用入门(一)软件初认识 ArcGIS Desktop使用入门(二)常用工具条——标准工具 ArcGIS Desktop使用入门(二)常用工具条——编辑器 ArcGIS Desktop使用入门(二&#x…...
R语言之环境清理
有时候 R 环境中残留的变量可能会导致警告,可以尝试清理工作空间并重新加载数据。 警告信息: In mget(objectNames, envir ns, inherits TRUE) : 重新评估被中断的许诺 # 观察前6行 head(iris)# 观察数据结构 str(iris)# 探知数据的极值和分位数,以及…...
javaSE————网络编程套接字
网络编程套接字~~~~~ 好久没更新啦,蓝桥杯爆掉了,从今天开始爆更嗷; 1,网络编程基础 为啥要有网络编程呢,我们进行网络通信就是为了获取丰富的网络资源,说实话真的很神奇,想想我们躺在床上&a…...
FreeRTOS二值信号量详解与实战教程
FreeRTOS二值信号量详解与实战教程 📚 作者推荐:想系统学习FreeRTOS嵌入式开发?请访问我的FreeRTOS开源学习库,内含从入门到精通的完整教程和实例代码! 1. 二值信号量核心概念解析 二值信号量(Binary Semaphore)是Fre…...
Java命名规则
在 Java 项目中,命名规则遵循一定的约定俗成规范,目的是提高代码可读性和团队协作效率。以下是 Java 项目命名的核心规则和常见实践: 一、项目整体命名 项目名 使用小写字母 短横线(kebab-case)…...
赛灵思 XCVU440-2FLGA2892E XilinxFPGA Virtex UltraScale
XCVU440-2FLGA2892E 属于 Xilinx Virtex UltraScale 系列,是面向高端应用的旗舰 FPGA 器件。该系列产品以出色的高并行处理能力、丰富的逻辑资源和高速互联能力闻名,广泛用于 高性能计算、数字信号处理等对计算能力和带宽要求极高的场景。采用先进的 20n…...
Spring Cloud Alibaba微服务-微服务介绍和搭建
1. 课程介绍 单体服务中有订单,用户,库存, 两个缺陷: a. 是以应用的维度进行负载均衡,资源占用大 b. 当其中一个模块宕机,整个应用就不能用了; nacos;ribbon,loadBa…...
