测试过程中经常会遇到需要将本地的文件上传到远程服务器上,或者需要将服务器上的文件拉到本地进行操作,以前安静经常会用到xftp工具。今天安静介绍一种python库Paramiko,可以帮助我们通过代码的方式进行完成对远程服务器的上传和下载操作,也可以进行对远程服务器输入操作命令。 Paramiko属于python的一个第三方库,可以远程连接Linux服务器,进行通过python进行对Linux进行操作,可以实现进行对远程服务器进行下载和上传文件操作。 Paramiko库主要包含两个部分:SSHClient和SFTPClient
SSHClient:表示类似于Linux的ssh命令,我们可以通过SSHClient模块对远程服务器执行一些命令操作(Linux)。
SFTPClient:表示类似于SFTP工具,可以实现对远程服务器的文件进行上传和下载。
这里安静通过SSHClient进行对远程服务器上进行连接,并执行Linux命令,首先进行对paramiko下的SSHClient完成实例化,在使用SSHclient下的connet进行连接,后续进行操作一些命令:
# 进行对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前面也介绍了主要是类似于xftp的工具,可以帮助我们实现远程文件的上传,下载。其实用方法也是一样的。先进行实例化,然后通过登录到服务器,通过创建sftp工具然后进行完成文件的上传和下载。
安静这里先编写一个txt文件,然后将这个文件通过代码的方法传入到服务器上。
这里通过的上传方法是put(服务器路径,本地路径):
# 对paramiko方法下的SSHclient进行实例化
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='xxxxx', port=22, username='root',password='xxxxxx')
sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())
bbb = "/home/anjing/222/anjing.txt"
通过执行代码后,我们发现服务器上已经存在了刚刚上传的文件。
我们通过进行将这个文本内容进行修改,然后将文件传到我们本地文件中通过vi命令进行编辑。
下载这里使用的方法是get(服务器路径,本地路径):
# 对paramiko方法下的SSHclient进行实例化