https://zhuanlan.zhihu.com/p/456447145

测试过程中经常会遇到需要将本地的文件上传到远程服务器上,或者需要将服务器上的文件拉到本地进行操作,以前安静经常会用到xftp工具。今天安静介绍一种python库Paramiko,可以帮助我们通过代码的方式进行完成对远程服务器的上传和下载操作,也可以进行对远程服务器输入操作命令。

Paramiko

Paramiko属于python的一个第三方库,可以远程连接Linux服务器,进行通过python进行对Linux进行操作,可以实现进行对远程服务器进行下载和上传文件操作。

安装

既然是第三方库,我们可以通过pip进行安装:

pip install paramiko

基本使用

Paramiko库主要包含两个部分:SSHClient和SFTPClient

SSHClient:表示类似于Linux的ssh命令,我们可以通过SSHClient模块对远程服务器执行一些命令操作(Linux)。

SFTPClient:表示类似于SFTP工具,可以实现对远程服务器的文件进行上传和下载。

SSHClient

这里安静通过SSHClient进行对远程服务器上进行连接,并执行Linux命令,首先进行对paramiko下的SSHClient完成实例化,在使用SSHclient下的connet进行连接,后续进行操作一些命令:

import paramiko

# 进行对paramiko方法下的SSHclient进行实例化

ssh = paramiko.SSHClient()

# 保存服务器密钥

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 输入服务器地址,账户名,密码

ssh.connect(hostname='xxxx', port=22,username='root',password='xxxxxx')

# 返回了三个数据,第一个是输入命令,第2个是命令返回的结果,第3个是命令错误时返回的结果

stdin, stdout, stderr = ssh.exec_command('pwd;lll')

# 返回了当前的路径结果,如果错误则返回为空

print(stdout.read().decode('utf-8'))

# 返回错误的执行结果,如果正确则返回为空

print(stderr.read().decode('utf-8'))

通过执行代码操作后,就很清楚的看到我们已经完成了对linux命令的输入,返回了正确的信息和错误的信息。

SFTPClient

sftpclient前面也介绍了主要是类似于xftp的工具,可以帮助我们实现远程文件的上传,下载。其实用方法也是一样的。先进行实例化,然后通过登录到服务器,通过创建sftp工具然后进行完成文件的上传和下载。

上传文件

安静这里先编写一个txt文件,然后将这个文件通过代码的方法传入到服务器上。

这里通过的上传方法是put(服务器路径,本地路径):

import paramiko

# 对paramiko方法下的SSHclient进行实例化

ssh = paramiko.SSHClient()

# 保存服务器密钥

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 输入服务器地址,账户名,密码

ssh.connect(hostname='xxxxx', port=22, username='root',password='xxxxxx')

# 创建sftp客户端

sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())

# 本地路径

aaa = "anjing.txt"

# 远程路径

bbb = "/home/anjing/222/anjing.txt"

sftp.put(aaa, bbb)

通过执行代码后,我们发现服务器上已经存在了刚刚上传的文件。

文件下载

我们通过进行将这个文本内容进行修改,然后将文件传到我们本地文件中通过vi命令进行编辑。

下载这里使用的方法是get(服务器路径,本地路径):

import paramiko

# 对paramiko方法下的SSHclient进行实例化

ssh = paramiko.SSHClient()

# 保存服务器密钥

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 输入服务器地址,账户名,密码

ssh.connect(hostname='xxxxx', port=22, username='root',password='xxxxxx')

# 创建sftp客户端

sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())

# 远程路径

bbb = "/home/anjing/2

# 下载文件

sftp.get(bbb, r'E:\web\anjing_01.txt')

通过执行代码后发现我们已经成功的将服务器上修改过的文件下载到了本地并修改了名称。

总结

安静通过小小的例子简单的介绍了paramiko如何对文件上传下载和执行linux的命令操作。对于我们测试来言,无论是日常测试中,还是在编写自动化中,又遇到需要服务器操作的时候,都可以尝试下,一来可以在领导面前稳稳的装一波,二来也可以增加我们对python知识的提高。好了,感谢您的阅读,希望对您有所帮助。

文章首发于:Atstudy网校:自动化测试学习:使用python库Paramiko实现远程服务器上传和下载

[转帖]python库Paramiko的更多相关文章

  1. 使用Python库paramiko登录远程设备

    前言 手动下载paramiko库的安装包.在PyPi库中查找即可,但是不到是我的电脑问题还是网络问题,2.0.0以上版本我都安装不了,因此我自己是安装的paramiko 1.17.0版本,此版本经过测 ...

  2. Python 库大全

    作者:Lingfeng Ai链接:http://www.zhihu.com/question/24590883/answer/92420471来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  3. 哪些 Python 库让你相见恨晚?【转】

    原文链接:https://www.zhihu.com/question/24590883/answer/92420471 原文链接:Python 资源大全 ---------------- 这又是一个 ...

  4. Python库资源大全

    转载地址:https://zhuanlan.zhihu.com/p/27350980 本文是一个精心设计的Python框架.库.软件和资源列表,是一个Awesome XXX系列的资源整理,由BigQu ...

  5. Python库,让你相见恨晚的第三方库

    环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具.pyenv – 简单的 Python 版本管理工具.Vex – 可以在虚拟环境中执行命令.virt ...

  6. Python 库,资源

    库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...

  7. Python资源 --Python库

    环境管理 管理 Python 版本和环境的工具 pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. virtualenv – 创建独立 Python 环境的工 ...

  8. 使用python的Paramiko模块登陆SSH

    使用python的Paramiko模块登陆SSH paramiko是用Python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. python的paramiko模块 ...

  9. python 库资源大全

    偶然的机会翻到这篇文章,很全面,来源:  Python 资源大全中文版       哪些 Python 库让你相见恨晚? 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 pyth ...

  10. Python 库汇总中文版

    这又是一个 Awesome XXX 系列的资源整理,由 vinta 发起和维护.内容包括:Web框架.网络爬虫.网络内容提取.模板引擎.数据库.数据可视化.图片处理.文本处理.自然语言处理.机器学习. ...

随机推荐

  1. JAVAEE基础知识

    JAVAEE基础知识 2018年3月,开源组织Eclipse基金会宣布,JavaEE(Enterprise Edition)被更名为JakartaEE,也就是9版本后改名Jakarta EE,也就是J ...

  2. vscode 启动go

    { "version": "0.2.0", "configurations": [ { "name": "La ...

  3. html2pdf

    nodejs 生成pdf比较靠谱,使用chrome核心渲染: puppeteer / phantom 爬虫都好用 good

  4. 手把手带你入门加密算法的Python实现

    摘要:一个简单的md5加密算法,带你解开所谓"加密"过程的神秘面纱. 一个简单的md5加密算法,非常适合新手练习 链接:> aHR0cDovL3d3dy5jaHVjaHVqa ...

  5. 云图说丨初识分布式消息服务Kafka版

    摘要:分布式消息服务Kafka版是一款基于开源社区版Kafka提供的消息队列服务,向用户提供计算.存储和带宽资源独占式的Kafka实例. 本文分享自华为云社区<[云图说]第254期 初识分布式消 ...

  6. 解读clickhouse存算分离在华为云实践

    摘要:本文是我们对clickhouse做了最简单的支持obs的适配改造. 本文分享自华为云社区<clickhouse存算分离在华为云实践>,作者: he lifu. clickhouse是 ...

  7. 开发调试更便捷!火山引擎 DataLeap 提供 Notebook 交互式开发体验

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 Notebook 是一种支持 REPL 模式的开发环境. 所谓「REPL」,即「读取-求值-输出」循环:输入一段代 ...

  8. Windows Service 服务中,不能访问挂载目录(网络映射盘)

    SpringBoot Windows 自启动 - 通过 Windows Service 服务实现 Windows Service 服务中,不能访问挂载目录(网络映射盘) 在Windows操作系统中,系 ...

  9. SecureCRT 取消右击粘贴功能

    SecureCRT 默认是选择复制.右击粘贴 但右击粘贴这个功能实在是太方便了,有时候会造成不必要的麻烦.所以一般情况下我是取消这个应用的 设置如下图所示,把勾取消就OK了

  10. Chrome 安装 Vue Devtools 调试工具

    源码下载地址:https://github.com/vuejs/vue-devtools Make sure you are using Node 6+ and NPM 3+ Clone this r ...