高级且优雅地远程操作服务器:认识Python模块Paramiko

在这里插入图片描述

前言

测试过程中经常会遇到需要将本地的文件上传到远程服务器上,或者需要将服务器上的文件拉到本地进行操作,以前安静经常会用到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知识的提高。

好了,感谢您的阅读,希望对您有所帮助。

现在就有这么一个机会,我邀请你进入我们的软件测试学习交流群:914172719,备注“csdn”大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。

送给大家一句话,共勉:当我们能力不足的时候,首先要做的是内修!当我们能力足够强大的时候,就可以外寻了!

最后也为大家准备了一份配套的学习资源,你能在 公众号:【伤心的辣条】免费获取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中资料包括了有基础知识、Linux必备、Shell、互联网程序原理、MysqL数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

包装成1年工作经验的测试工程师,我给他的面试前的建议如下

“入职一年,那个被高薪挖来的自动化软件测试被劝退了。”

4个月自学软件测试面进阿里!如何从功能测试转成自动化…我经历了什么

6000元报了培训班,3个月后我成功“骗”进了腾讯大厂,月薪15000

在这里插入图片描述

相关文章

背景:我已经有一个ssh公钥和私钥了,绑定的是公司的码云但是...
在服务器程序的部署运维过程中,我们经常需要将文件从一个服...
#!/bin/bash#创建一个以.sc结尾的文件,把要操作的主机按顺序...
打开终端安装openssh-server软件包:sudoaptupdatesudoaptins...
环境centos7.9,.NET5一、Jenkins搭建1)下载Jenkins的war包...
dropbear下载地址:https://matt.ucc.asn.au/dropbearelease...