当前位置: 首页 > news >正文

paramiko 模块

paramiko 是一个 Python 模块,用于实现 SSH 协议,并提供了一个强大的接口来执行远程命令、管理远程文件等操作。它是一个非常流行的用于自动化和脚本化远程服务器管理的工具。

类/方法/属性描述
paramiko.SSHClient用于建立 SSH 连接的类,提供执行命令和传输文件的方法。
paramiko.Transport底层传输类,用于建立 SSH 连接。
paramiko.SFTPClient用于通过 SSH 进行文件传输的类。
paramiko.AutoAddPolicySSH 服务器主机密钥策略,用于自动添加未知的主机密钥到本地主机密钥存储中。
paramiko.client.connect()SSHClient 类的静态方法,用于建立 SSH 连接。
paramiko.client.exec_command()SSHClient 类的方法,用于在远程服务器上执行命令。
paramiko.client.open_sftp()SSHClient 类的方法,用于打开 SFTP 会话。
paramiko.client.load_system_host_keys()SSHClient 类的方法,用于加载系统主机密钥。
paramiko.client.set_missing_host_key_policy()SSHClient 类的方法,用于设置缺失主机密钥策略。
paramiko.client.close()SSHClient 类的方法,用于关闭 SSH 连接。
paramiko.sftp.SFTPClient.put()SFTPClient 类的方法,用于将文件上传到远程服务器。
paramiko.sftp.SFTPClient.get()SFTPClient 类的方法,用于从远程服务器下载文件。
paramiko.sftp.SFTPClient.listdir()SFTPClient 类的方法,用于列出远程目录的内容。
paramiko.sftp.SFTPClient.mkdir()SFTPClient 类的方法,用于在远程服务器上创建目录。
paramiko.sftp.SFTPClient.remove()SFTPClient 类的方法,用于删除远程服务器上的文件。
paramiko.sftp.SFTPClient.rename()SFTPClient 类的方法,用于重命名远程服务器上的文件或目录。

封装 Transport 示例

以下是封装 paramiko.Transport 类的示例代码,用于管理 SSH 连接、执行远程命令和进行文件传输:

import paramiko
from paramiko import Transport, SFTPClientclass SSHTransport:def __init__(self, hostname, port=22, username=None, password=None, pkey=None):self.hostname = hostnameself.port = portself.username = usernameself.password = passwordself.pkey = pkeyself.transport = Nonedef connect(self):self.transport = Transport((self.hostname, self.port))self.transport.connect(username=self.username, password=self.password, pkey=self.pkey)def execute_command(self, command):if self.transport is None or not self.transport.is_active():raise Exception("Transport is not connected")session = self.transport.open_session()session.exec_command(command)stdout = session.makefile('r', -1)stderr = session.makefile_stderr('r', -1)return stdout.read(), stderr.read()def upload_file(self, local_path, remote_path):if self.transport is None or not self.transport.is_active():raise Exception("Transport is not connected")sftp = SFTPClient.from_transport(self.transport)sftp.put(local_path, remote_path)sftp.close()def download_file(self, remote_path, local_path):if self.transport is None or not self.transport.is_active():raise Exception("Transport is not connected")sftp = SFTPClient.from_transport(self.transport)sftp.get(remote_path, local_path)sftp.close()def close(self):if self.transport is not None:self.transport.close()# 使用示例
ssh_transport = SSHTransport('192.168.226.26', username='root', password='lzz2578+')
ssh_transport.connect()# 执行远程命令
stdout, stderr = ssh_transport.execute_command('ls -l')
print('STDOUT:', stdout.decode('utf-8'))
print('STDERR:', stderr.decode('utf-8'))# 上传文件
ssh_transport.upload_file('log.txt', 'log.txt')# 下载文件
ssh_transport.download_file('log.txt', 'log.txt')# 关闭连接
ssh_transport.close()

说明

  • connect: 建立 SSH 连接。
  • execute_command: 执行远程命令并返回标准输出和标准错误。
  • upload_file: 上传本地文件到远程服务器。
  • download_file: 从远程服务器下载文件到本地。
  • close: 关闭 SSH 连接。 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 微信小程序-自定义tabBar
  • 认证中心:基于cookie和session实现单点登陆
  • 【后端开发实习】Python基于Quart框架实现SSE数据传输
  • 科普文:5种Linux下软件部署方式说明
  • 基于微信小程序+SpringBoot+Vue的自习室选座与门禁系统(带1w+文档)
  • git配置代理
  • 深入探索PHP框架:Symfony框架全面解析
  • 将Android Library项目发布到JitPack仓库
  • Android Studio导入源码
  • 使用PageHelper插件来分页查询
  • JavaScript实战 - 一个能够做圆周运动的模型
  • “微软蓝屏”全球宕机,敲响基础软件自主可控警钟
  • HTML:lang属性作用
  • 谷粒商城实战笔记-47-商品服务-API-三级分类-网关统一配置跨域
  • Transformer-Bert---散装知识点---mlm,nsp,较之经典tran的区别和实际应用方式
  • EOS是什么
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • magento 货币换算
  • nodejs实现webservice问题总结
  • Unix命令
  • Vim 折腾记
  • 警报:线上事故之CountDownLatch的威力
  • 你不可错过的前端面试题(一)
  • 在Mac OS X上安装 Ruby运行环境
  • 智能网联汽车信息安全
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • ​数据结构之初始二叉树(3)
  • ‌移动管家手机智能控制汽车系统
  • #Linux(帮助手册)
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (16)Reactor的测试——响应式Spring的道法术器
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (javaweb)Http协议
  • (LLM) 很笨
  • (Qt) 默认QtWidget应用包含什么?
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (计算机网络)物理层
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .FileZilla的使用和主动模式被动模式介绍
  • .gitignore文件使用
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .Net OpenCVSharp生成灰度图和二值图
  • .NET 服务 ServiceController
  • .net 生成二级域名
  • .net 验证控件和javaScript的冲突问题
  • .net网站发布-允许更新此预编译站点
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • .vimrc 配置项
  • // an array of int