python实现远程服务器的操作
前⾔
测试过程中经常会遇到需要将本地的⽂件上传到远程服务器上,或者需要将服务器上的⽂件拉到本地就⾏操作,以前安静经常会⽤到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())
# 输⼊服务器地址,账户名,密码
# 返回了三个数据,第⼀个是输⼊命令,第2个是命令返回的结果,第3个是命令错误时返回的结果
stdin, stdout, stderr = _command('pwd;lll')
# 返回了当前的路径结果,如果错误则返回为空ssh命令行
ad().decode('utf-8'))
# 返回错误的执⾏结果,如果正确则返回为空
ad().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())
# 输⼊服务器地址,账户名,密码
# 创建sftp客户端
sftp = paramiko.SFTPClient.from__transport())
# 本地路径
aaa = ""
# 远程路径
bbb = "/home/anjing/"
sftp.put(aaa, bbb)
通过执⾏代码后,我们发现服务器上已经存在了刚刚上传的⽂件
⽂件下载
我们通过进⾏将这个⽂本内容进⾏修改,然后将⽂件传到我们本地⽂件中通过vi命令进⾏编辑
下载这⾥使⽤的⽅法是get(服务器路径,本地路径)
import paramiko
# 对paramiko⽅法下的SSHclient进⾏实例化
ssh = paramiko.SSHClient()
# 保存服务器密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 输⼊服务器地址,账户名,密码
# 创建sftp客户端
sftp = paramiko.SFTPClient.from__transport())
# 远程路径
bbb = "/home/anjing/2
# 下载⽂件
<(bbb, r'E:\web\')
通过执⾏代码后发现我们已经成功的将服务器上修改过的⽂件下载到了本地并修改了名称
总结
安静通过⼩⼩的例⼦简单的介绍了paramiko如何对⽂件上传下载和执⾏linux的命令操作。对于我们测试来⾔,⽆论是⽇常测试中,还是在编写⾃动化中,⼜遇到需要服务器操作的时候,都可以尝试下,⼀来可以在领导⾯前稳稳的装⼀波,⼆来也可以增加我们对python知识的提⾼。好了,感谢您的阅读,希望对您有所帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论