python实现windows ftp下载多台linux上的文件

from ftplib import FTP
import os
import shutil
import subprocess
def download_ftp_directory(ftp, remote_dir, local_dir):
    """
    递归地下载FTP服务器上的目录。

    :param ftp: FTP连接对象
    :param remote_dir: FTP服务器上的远程目录路径
    :param local_dir: 本地目录路径,用于保存下载的文件
    """
    # 确保本地目录存在
    if not os.path.exists(local_dir):
        os.makedirs(local_dir)

        # 切换到FTP服务器上的远程目录
    # print(ftp.pwd())
    # print(remote_dir)
    # print(local_dir)
    ftp.cwd(remote_dir)
    # 获取远程目录中的文件和子目录列表
    names = ftp.nlst()

    # 遍历文件和子目录
    for name in names:
        # 构建完整的远程和本地路径
        remote_path = remote_dir + "/" + name
        local_path = os.path.join(local_dir, name)

        # 如果是文件,则下载
        if ftp.nlst(name) == [name]:  # 简单的检查,看是否有以该名称为前缀的子目录
            with open(local_path, 'wb') as f:
                ftp.retrbinary(f'RETR {name}', f.write)
                # 如果是子目录,则递归下载
        else:
            download_ftp_directory(ftp, remote_path, local_path)

        # FTP连接信息

def dwonload_all_results():
    computer1 = ['192.168.0.2','n-1','123456','/home/n-1/dest']
    computer2 = ['192.168.0.3','n-2','123456','/home/n-2/dest']
    computer4 = ['192.168.0.4','n-4','123456','/home/n-4/dest']
    config_computers = [computer1,computer2,computer4]
    local_root_dir = 'D:\\code\\python\\downloaded_ftp_content'  # 本地保存目录
    for computer in config_computers:
        ftp_host = computer[0]
        ftp_user = computer[1]
        ftp_pass = computer[2]
        remote_root_dir = computer[3]
        # 连接到FTP服务器
        ftp = FTP(ftp_host)
        ftp.login(user=ftp_user, passwd=ftp_pass)
        # 下载整个目录
        download_ftp_directory(ftp, remote_root_dir, local_root_dir)
        # 关闭FTP连接
        ftp.quit()
        print(computer[1]+"下载完成")
def del_all_results():
    local_root_dir = 'D:\\code\\python\\downloaded_ftp_content'
    shutil.rmtree(local_root_dir)

if __name__ == '__main__':
    del_all_results()
    dwonload_all_results()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WindowsLinux 之间传输文件,可以使用以下几种方法: 1. 使用 FTP:可以在 Windows 上安装一个 FTP 服务器,然后在 Linux 上使用 FTP 客户端连接到 Windows 服务器,然后传输文件。 2. 使用 SCP:SCP 是 Secure Copy 的缩写,是基于 SSH 协议的一种安全的文件传输协议。可以在 Linux 终端中使用 scp 命令将文件Windows 传输到 Linux。 3. 使用 Samba 共享:Samba 是一种允许 LinuxWindows 系统之间共享文件的协议。可以在 Windows 上安装 Samba 服务器,然后在 Linux 上挂载 Windows 共享,然后传输文件。 以下是使用 SCP 在 WindowsLinux 之间传输文件的具体步骤: 1. 在 Windows 上安装一个 SSH 客户端,比如 PuTTY。 2. 在 Linux 上使用 SCP 命令将文件Windows 传输到 Linux。假设 Windows IP 地址为 192.168.1.100,要传输的文件为 file.txt,Linux 用户名为 user,Linux IP 地址为 192.168.1.200,传输命令如下: ``` scp user@192.168.1.100:/path/to/file.txt /path/to/destination/folder/ ``` 其中,/path/to/file.txt 是 Windows 上的文件路径,/path/to/destination/folder/ 是 Linux 上的目标文件夹路径。scp 命令会提示输入 Windows 用户名和密码。 3. 如果要将文件Linux 传输到 Windows,可以在 Windows 上安装一个 SCP 服务器,比如 WinSCP,然后在 Linux 上使用 SCP 命令将文件传输到 Windows。假设 Windows 用户名为 user,密码为 password,Windows IP 地址为 192.168.1.100,要传输的文件为 file.txt,Linux 用户名为 user,Linux IP 地址为 192.168.1.200,传输命令如下: ``` scp /path/to/file.txt user@192.168.1.100:/path/to/destination/folder/ -P 22 ``` 其中,/path/to/file.txt 是 Linux 上的文件路径,/path/to/destination/folder/ 是 Windows 上的目标文件夹路径,-P 22 指定 SSH 端口为 22。scp 命令会提示输入 Windows 用户名和密码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值