• 0
  • 0
分享
  • 高级且优雅地远程操作服务器:认识Python模块Paramiko
  • 曼倩诙谐 2022-01-13 09:43:35 字数 2372 阅读 871 收藏 0

  前言

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

  Paramiko

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

  安装

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

pip install paramiko


1-1.png


  基本使用

  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命令的输入,返回了正确的信息和错误的信息。

1-2.png

  SFTPClient

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

  上传文件

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

1-3.png

  这里通过的上传方法是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)

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

1-4.png

  文件下载

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

1-5.png

  下载这里使用的方法是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')

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

1-6.png

  总结

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



作者:测试安静   

来源:http://www.51testing.com/html/22/n-4480822.html


2022 问卷.jpg

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 今天一起来谈一谈敏捷模式下的大QA团队建设。敏捷,相对传统瀑布式模式,角色名称边界较之前,模糊了很多。 我们大概都知道,严格意义上讲,QA不等于测试,但是在很多公司,名称是混淆的。 而另外有一种说法是:QA分3类,配管型,过程型,测试型。而在敏捷研发过程中,有些测试,兼职了QA角色, 更有往Scrum Master转型的趋势,我在实际的工作中,就主持研发流程改进工作,近8年的时间。 在传统意义上,我们经常会质疑QA如何做到公正公平,不去偏袒测试团队,但是却带来了业务系统、流程难以落地的情况。如图,为了标准统一、工具平台统一,我们架构可以尝试如下:法治、人治的情况下...
            2 2 2260
            分享
          •   背景:随着前后端分离、微服务等技术的广泛应用,接口测试在整个测试过程中扮演的角色越来越重要,如何更加高效地把接口测好、测得更加充分就成了一个亟待解决的难题。  当前在对具体的某一接口进行测试时,普遍采取的方法是测试人员按照接口文档中的字段取值规则使用接口测试工具(例如Postman等)手工来回修改接口报文中的某一个字段值来进行测试。  这种方法对于单个或者是简单接口相对比较友好,然而往往一个系统中会包含有大量的接口、接口逻辑复杂、接口里边包含有非常多的字段,这就给接口测试的开展带来了很多问题,比如费时费力、工作量大、漏测某些测试场景等。  同时还由于项目工期紧张等原因,在接口测试过程中一般...
            3 3 1704
            分享
          • 苹果6月4日的全球开发者大会上,我们看到iOS的改进之处在于增强了对增强现实的支持。一个全新的ARKit正在崭露头角,随着它的出现,一些令人印象深刻的应用程序和功能可以使混合现实不再仅仅是只一个新奇的玩意了,可以会有更多的应用。      我们还没有看到任何真正令人兴奋的AR,但重要的是要记住这个主题对苹果有多重要。首席执行官蒂姆库克一再表示,他认为AR是苹果长期未来最重要的发展之一。去年,他告诉Vogue,“我认为所有任何部门或行业都会受到AR的影响。” 我们现在还只是看到了渐进式的发展,但AR是构建软件背景的一部分,这将...
            0 0 1930
            分享
          •       相信很多测试的小伙伴也都遇到过这样的情况,往往产品上线,只要出现bug,成为“背锅侠”。      测试人员在工作中经常打交道的肯定是开发和产品经理,开发将程序写出来,测试员进行测试。软件测试完成后,产品才能生产,在这过程中,难免会遇到软件会出现问题的情况。那么你肯定听过这些话:“这么明显的bug你都测不出来吗?”“为啥这个功能还没测完就上线了?”“研发时间不够,你压缩一下测试时间”“这个bug和开发没关系,注意看需求”      听到这些话,相信你分分钟高血压,这个锅不知...
            0 0 2003
            分享
          •   1 JMeter日志概览  jmeter日志文件保存在bin目录中,名称为jmeter.log。我们可以在面板中直接察看日志,点击右上角黄色标志物可以打开日志面板,再次点击收起。  另外,JMeter可以很方便地设置日志输出级别:  通过这种方式修改日志级别,只是零时修改,不会改变配置文件中的值。当Jmeter重启后,又会恢复为默认的日志级别。  在Jmeter/bin 路径下打开 log4j2.xml文件,修改日志级别,这里修改该是永久性修改  通过修改Root level 值改变日志级别,该修改是永久性的。对Jmeter 的GUI页面运行脚本和命令模式运行脚本都会生效。  2...
            0 1 1200
            分享
      • 51testing软件测试圈微信