在Python中使用SCPClient()上传和下载文件到远程服务器
发布时间:2023-12-24 01:01:44
在Python中,可以使用paramiko库的SCPClient()类来实现在远程服务器上上传和下载文件。下面是一个使用例子,展示如何使用SCPClient()类上传和下载文件。
首先,需要安装paramiko库。可以通过运行以下命令来安装paramiko库:
pip install paramiko
然后,以下是一个使用SCPClient()类上传和下载文件的示例代码:
import paramiko
from scp import SCPClient
def upload_file(ip, username, password, local_file, remote_path):
try:
# 创建SSH客户端
ssh_client = paramiko.SSHClient()
# 自动添加远程服务器的SSH密钥
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程服务器
ssh_client.connect(hostname=ip, username=username, password=password)
# 创建SCP客户端
scp_client = SCPClient(ssh_client.get_transport())
# 上传文件
scp_client.put(local_file, remote_path)
print("文件上传成功!")
except Exception as e:
print("文件上传失败:", str(e))
finally:
# 关闭连接
scp_client.close()
ssh_client.close()
def download_file(ip, username, password, remote_file, local_path):
try:
# 创建SSH客户端
ssh_client = paramiko.SSHClient()
# 自动添加远程服务器的SSH密钥
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程服务器
ssh_client.connect(hostname=ip, username=username, password=password)
# 创建SCP客户端
scp_client = SCPClient(ssh_client.get_transport())
# 下载文件
scp_client.get(remote_file, local_path)
print("文件下载成功!")
except Exception as e:
print("文件下载失败:", str(e))
finally:
# 关闭连接
scp_client.close()
ssh_client.close()
# 使用示例
ip = "远程服务器IP"
username = "远程服务器用户名"
password = "远程服务器密码"
local_file = "本地文件路径"
remote_path = "远程服务器文件路径"
local_path = "本地路径"
remote_file = "远程服务器文件路径"
# 上传文件到远程服务器
upload_file(ip, username, password, local_file, remote_path)
# 从远程服务器下载文件
download_file(ip, username, password, remote_file, local_path)
以上代码中,首先创建SSH客户端并连接远程服务器,并通过SSH客户端创建SCP客户端。然后,通过SCP客户端的put()方法上传文件到远程服务器,或通过get()方法从远程服务器下载文件到本地。
在使用时,只需将示例代码中的相关参数替换为实际的值,如远程服务器的IP、用户名、密码,本地文件的路径以及远程服务器上的文件路径。
