欢迎光临
我们一直在努力

从samba服务器下载文件工具

从 Samba 服务器下载文件工具

启用sambda:https://blog.csdn.net/qq_37059136/article/details/142914294

项目概述

这是一个用于从 Samba 共享服务器下载文件/文件夹的工具,支持批量下载、模块化配置和自定义本地目录结构。

项目结构

get-samba-file/
├── config.yaml # 配置文件(YAML格式)
├── run.bat # Windows 启动脚本
├── scripts/
│ └── samba_downloader.py # 主 Python 脚本
├── doc/
│ └── 从samba服务器下载文件工具.md # 本文档
└── downloads/ # 下载文件存放目录(自动创建)
├── module_name1/ # 按模块名组织的子目录
├── module_name2/
└── …

环境要求

系统要求

  • 操作系统:Windows 7/8/10/11
  • Python 版本:3.7 或更高版本

Python 依赖包

脚本需要安装以下 Python 包:

  • PyYAML – 用于解析 YAML 配置文件
  • pysmb – 用于连接 Samba 服务器

安装步骤

1. 安装 Python

如果尚未安装 Python,请从以下地址下载并安装:

  • 下载地址:https://www.python.org/downloads/
  • 推荐版本:Python 3.11+

安装时请勾选 “Add Python to PATH” 选项,将 Python 添加到系统环境变量。

2. 安装依赖包

打开命令提示符(cmd)或 PowerShell,运行以下命令:

python -m pip install PyYAML pysmb

或者如果您的系统中有 python3 命令:

python3 -m pip install PyYAML pysmb

3. 验证安装

运行以下命令验证 Python 和依赖包是否正确安装:

python –version
python -c "import yaml; import smb; print('依赖包安装成功')"

配置说明

config.yaml 文件结构

配置文件采用 YAML 格式,支持模块化配置。以下是完整的配置示例:

# Samba 服务器模块模板(可选,用于复用配置)
module_templates:
# 示例:定义一个可复用的模块模板
graphic: &graphic
name: graphic
items:
path: 633/out/arm64/targets/graphic/graphic_2d/
# local_name: graphic_2d # 可选:自定义本地目录名

# 设备列表
devices:
# 设备1:192.168.16.17
ip: 192.168.16.17
share_name: shared_folder_17
username: root
password: 123456
modules:
name: kh_edgecomputing_thing_accessmanager_meta
items:
path: kh5.0.1/out/arm64/targets/kh_edgecomputing/kh_edgecomputing_thing_accessmanager_meta/libnanning_subway_handler.z.so
# local_name: libnanning_subway_handler.z.so # 可选

# 设备2:192.168.16.40
ip: 192.168.16.40
share_name: shared_folder_40
username: root
password: 123456
modules:
# 引用模板(推荐)
*graphic
*multimedia
*audio_framework
# 或直接定义
name: custom_module
items:
path: some/remote/path/
local_name: custom_name

配置字段说明

设备级配置(devices[].*)
  • ip:Samba 服务器 IP 地址(必需)
  • share_name:共享目录名称(必需)
  • username:登录用户名(可选,默认为空)
  • password:登录密码(可选,默认为空)
模块级配置(devices[].modules[])
  • name:模块名称,将作为本地下载的根目录名(必需)
  • items:该模块下的文件/目录列表(必需)
项目级配置(devices[].modules[].items[])
  • path:远程 Samba 共享中的路径(必需)
  • local_name:自定义本地文件名/目录名(可选)
    • 如果不指定,将使用远程路径的最后一部分作为本地名称

模板复用

YAML 支持锚点(&)和引用(*)语法,可以定义可复用的模块模板:

module_templates:
camera: &camera
name: camera
items:
path: 633/out/arm64/targets/multimedia/camera_framework/

devices:
ip: 192.168.16.40
share_name: shared_folder_40
modules:
*camera # 引用模板

使用方法

1. 配置 config.yaml

根据您的 Samba 服务器信息编辑 config.yaml 文件。

2. 运行脚本

双击 run.bat 文件,或在命令提示符中运行:

run.bat

3. 交互操作

脚本会显示可用设备列表,用户选择设备后进入功能菜单:

  • 显示设备完整配置:查看当前设备的详细配置
  • 检测IP连通性:测试与设备的网络连接
  • 获取文件/文件夹:下载文件(支持单选或批量下载)
  • 返回设备选择界面:切换到其他设备
  • 退出脚本:结束程序
  • 下载规则

    • 目录结构:文件按模块名组织,存放在 downloads/模块名/ 下
    • 文件命名:
      • 如果设置了 local_name,使用自定义名称
      • 否则使用远程路径的最后一部分
    • 目录下载:递归下载整个目录结构
    • 记录文件:每次下载会在目标目录生成 info.txt,记录下载信息

    故障排除

    常见问题

  • ModuleNotFoundError: No module named ‘yaml’

    • 解决:运行 python -m pip install PyYAML pysmb
  • 连接失败

    • 检查 IP 地址是否正确
    • 确认 Samba 服务正在运行
    • 验证用户名和密码
  • 权限不足

    • 检查 Samba 共享权限设置
    • 确认用户有读取权限
  • 中文乱码

    • 脚本已配置 UTF-8 编码,如仍有问题请检查控制台编码
  • 日志查看

    下载记录保存在各模块目录的 info.txt 文件中,包含:

    • 下载时间
    • 远程 IP 和共享名
    • 远程路径
    • 本地保存路径
    • 使用用户名

    高级配置

    多设备支持

    配置文件支持多个设备,脚本会显示设备列表供选择。

    批量下载

    在文件选择界面输入特殊数字:

    • 0:退出当前界面
    • 所有项目数量 + 1:全部下载

    自定义本地名称

    通过 local_name 字段自定义下载后的文件名/目录名。

    版本信息

    • 当前版本:v1.0
    • 支持平台:Windows
    • Python 要求:>= 3.7

    更新日志

    • v1.0:初始版本,支持基本下载功能和 YAML 配置
    赞(0)
    未经允许不得转载:171主机测评 » 从samba服务器下载文件工具
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址