欢迎访问宙启技术站
智能推送

在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、用户名、密码,本地文件的路径以及远程服务器上的文件路径。