📜  python sftp put 文件 - Python (1)

📅  最后修改于: 2023-12-03 15:34:04.372000             🧑  作者: Mango

Python SFTP Put 文件

SFTP (Secure File Transfer Protocol) 是一种基于 SSH 安全协议的文件传输协议,它允许我们在不暴露明文密码的情况下,通过 SSH 协议传输文件。在 Python 中,我们可以使用 Paramiko 模块来实现 SFTP 协议的文件传输。

准备工作

在使用 Paramiko 模块之前,我们需要先安装该模块。可以通过 pip 命令来安装:

pip install paramiko

在安装完成后,我们可以使用以下代码来导入 Paramiko 模块:

import paramiko
连接 SFTP 服务器

在进行文件传输之前,我们需要先连接到远程服务器。以下是连接 SFTP 服务器的示例代码:

sftp = None

def connect(hostname, port, username, password):
    global sftp

    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(hostname, port=port, username=username, password=password)

    sftp = client.open_sftp()

在调用 connect 函数之前,我们需要事先知道远程服务器的地址、端口、用户名和密码。connect 函数中,我们首先创建了一个 SSHClient 对象,然后连接到远程服务器。最后,我们使用 SSHClient.open_sftp() 方法打开 SFTP 通道。

上传文件

在连接到 SFTP 服务器之后,我们可以使用 sftp.put() 方法来上传本地文件到服务器中。以下是上传文件的示例代码:

def upload_file(local_file, remote_file):
    global sftp

    sftp.put(local_file, remote_file)

在 upload_file 函数中,我们首先使用 sftp.put() 方法上传本地文件到服务器中。该方法的第一个参数是本地文件路径,第二个参数是服务器中文件的路径。

示例代码

下面是一个完整的示例代码,该代码可以将本地的 test.txt 文件上传到服务器的 /tmp 目录中:

import paramiko

sftp = None

def connect(hostname, port, username, password):
    global sftp

    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(hostname, port=port, username=username, password=password)

    sftp = client.open_sftp()

def upload_file(local_file, remote_file):
    global sftp

    sftp.put(local_file, remote_file)

if __name__ == '__main__':
    # 连接 SFTP 服务器
    connect('example.com', 22, 'username', 'password')

    # 上传 test.txt 文件到 /tmp 目录中
    upload_file('test.txt', '/tmp/test.txt')

    # 关闭 SFTP 通道
    sftp.close()
总结

使用 Paramiko 模块,我们可以轻松地实现 SFTP 协议的文件传输。在上传文件时,我们可以使用 sftp.put() 方法,该方法可以将本地文件上传到远程服务器中。