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()

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

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

相关文章

《TCP/IP网络编程》学习笔记 | Chapter 24:制作 HTTP 服务器端

《TCP/IP网络编程》学习笔记 | Chapter 24:制作 HTTP 服务器端 《TCP/IP网络编程》学习笔记 | Chapter 24:制作 HTTP 服务器端HTTP 概要理解 Web 服务器端无状态的 Stateless 协议请求消息(Request Message)的结构响应消息&#x…

【Quest开发】在虚拟世界设置具有遮挡关系的透视窗口

软件:Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件:Meta Quest3 仅针对urp管线 参考了YY老师这篇,可以先看他的再看这个可能更好理解一些:Unity Meta Quest MR 开发(七):使…

GPU 招投标全流程分析与总结

GPU 招投标全流程分析与总结 招投标流程概述 以下是通过代理商采购Nvidia H20-GPU 141G的招投标全流程分析: #mermaid-svg-hMPPfkCpGj8GKXfV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hMPPfkCpGj8GKXfV .er…

[C++] STL中的向量容器<vector>附加练习

目录 讲在前面(必看)八卦阵题目描述输入格式输出格式输入输出样例数据范围AC代码及要点 决赛应援题目描述输入格式输出格式输入输出样例数据范围AC代码及要点 讲在前面(必看) 本篇为练习篇, vector讲解篇在这里. 菜鸟食用前请做好心理准备(你懂的) 八卦阵 题目描述 n 名同学…

基于SpringBoot+Vue3实现的宠物领养管理平台功能一

一、前言介绍: 1.1 项目摘要 随着社会经济的发展和人们生活水平的提高,越来越多的人开始关注并参与到宠物领养中。宠物已经成为许多家庭的重要成员,人们对于宠物的关爱和照顾也日益增加。然而,传统的宠物领养流程存在诸多不便&a…

parameter和localparam的区别(verilog中)

在Verilog中,parameter 和 localparam 都用于定义常量,但是它们之间有一些重要的区 作用范围: parameter:可以在模块外部被修改或重定义。它可以被作为模块的参数传递给其他模块,因此具有较广泛的作用范围,…

鸿蒙API15 “一多开发”适配:解锁黄金三角法则,开启高效开发新旅程

一、引言 在万物互联的时代浪潮中,鸿蒙操作系统以其独特的 “一多开发” 理念,为开发者打开了一扇通往全场景应用开发的新大门。“一多开发”,即一次开发,多端部署 ,旨在让开发者通过一套代码工程,就能高效…

Linux中docker容器拉取镜像失败解决方案

查看 /etc/systemd/system/docker.service.d/http-proxy.conf 文件(没有则新建),查看自定义 Docker 服务的代理设置 输入内容 [Service] Environment"HTTP_PROXYsocks5://10.211.13.214:7890" Environment"HTTPS_PROXYsocks…

半导体设备通信标准—secsgem v0.3.0版本使用说明文档(2)之GEM(SEMI 30)

文章目录 1、处理器1.1、事件 2、GEM 合规性2.1、状态模型2.2、 设备加工状态2.3、 文档2.4、 控制 (作员启动)2.5、 动态事件报告配置2.6、 跟踪数据收集2.7、 报警管理2.8、 远程控制2.9、 设备常量2.10、 工艺配方管理2.11、 物料移动2.12、 设备终端…

每日算法-链表(23.合并k个升序链表、25.k个一组翻转链表)

一.合并k个升序链表 1.1题目描述 1.2题解思路 解法一:小根堆 我们可以先定义一个小根堆,将k个指针的头结点如堆,每次取堆顶元素尾插到newhead中,然后再pop(),接着push堆顶原来堆顶元素的下一个节点 重点分析&#…

Java性能剖析工具箱

1. 基础知识 1.1 Java性能调优概述 1.1.1 性能调优的重要性 性能调优是提升系统效率、降低成本和增强用户体验的关键步骤。通过优化,可以减少响应时间、降低资源消耗并提高系统的稳定性和可扩展性。 1.1.2 性能问题的常见表现 高CPU使用率:可能由热点方法或线程阻塞引起。…

如何使用SpringApplicationRunListener在Spring Boot 应用的不同生命周期阶段插入自定义逻辑

目录 一、引言二、核心方法概述三、加载机制四、使用场景五、扩展 - 如何在测试的不同阶段插入逻辑5.1 TestExecutionListener & AbstractTestExecutionListener5.1.1 主要功能5.1.2 生命周期方法 5.2 如何集成TestExecutionListener5.3 总结 一、引言 SpringApplicationR…

【NLP】 19. Tokenlisation 分词 BPE, WordPiece, Unigram/SentencePiece

1. 翻译系统性能评价方法 在机器翻译系统性能评估中,通常既有人工评价也有自动评价方法: 1.1 人工评价 人工评价主要关注以下几点: 流利度(Fluency): 判断翻译结果是否符合目标语言的语法和习惯。充分性…

openai发布今天发布了o3和o4-mini。

ChatGPT Plus、Pro和Team用户已经可以使用o3、o4-mini和o4-mini-high,取代o1、o3-mini和o3-mini-high。具体特点: ChatGPT-o3 特点:o3模型使用高级推理技术,这意味着它在处理复杂问题和逻辑推理方面表现出色。但是不能联网搜索 …

ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(输入类外设之触摸屏 Touch)

目录 ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(输入类外设之触摸屏 Touch)简介模块概述功能定义架构位置核心特性 触摸(Touch)外设触摸外设概述触摸外设API和数据结构外设层API(periph_touch.h/periph_touch…

python 读取分级目录

import osdef read_files_in_directory(root_dir):# 遍历根目录下的所有文件和目录for year_dir in os.listdir(root_dir):year_path os.path.join(root_dir, year_dir)if os.path.isdir(year_path): # 确保是目录for month_dir in os.listdir(year_path):# if month_dir in …

MongoServerError: Authentication failed.处理办法

1停止MongoDB服务: systemctl stop mongod2临时修改MongoDB配置,禁用认证: vim /etc/mongdb.config 在配置文件中找到 security:authorization: disabled # 临时关闭认证3.重启MongoDB服务 # 重启MongoDB服务 sudo systemctl restart mon…

ObjectInputStream 终极解析与记忆指南

ObjectInputStream 终极解析与记忆指南 一、核心本质 ObjectInputStream 是 Java 提供的对象反序列化流,继承自 InputStream,用于读取由ObjectOutputStream序列化的Java对象。 核心特性速查表 特性说明继承链InputStream → ObjectInputStream核心功能实现Java对象反序列化…

Java面试高频问题(1-5)

一、HashMap实现原理与并发问题 核心机制 1. 哈希冲突解决方案:采用数组链表红黑树结构(JDK1.8),当链表长度超过阈值(默认8)时转为红黑树,提升查询效率 2. 扩容机制:当元素数量超过…

Genspark:重新定义AI搜索与代理的全能型工具

在当今快速发展的AI技术领域,搜索工具正在经历前所未有的变革。Genspark,这家由前百度高管景鲲和朱凯华创立的AI公司,为我们带来了全新的AI代理引擎体验。作为一位专注于AI工具分享的博主,今天我将为大家详细介绍这款强大的工具&a…