Pyftpdlib 是一个纯 Python 实现的高性能 FTP 服务器库,可以快速搭建 FTP 服务并灵活配置用户权限。它既支持命令行一键启动,也支持通过 API 编程方式进行深度定制。


📌 核心功能

  • 快速搭建 FTP 服务:只需一行命令即可启动一个可用的 FTP 服务器。
  • 用户认证与权限管理:支持创建多个用户,设置不同的目录和权限(读、写、删除、重命名等)。
  • 匿名登录:可配置匿名用户访问指定目录。
  • 目录与文件操作:支持标准 FTP 命令,如 LISTRETRSTORDELERNFR/RNTO 等。
  • 权限控制:通过 perm 参数精细控制用户操作,例如:
    • e 更改目录(CWD、CDUP)
    • l 列表文件(LIST、NLST)
    • r 下载文件(RETR)
    • w 上传文件(STOR)
    • d 删除文件(DELE)
    • m 创建目录(MKD)
  • 高性能与可扩展性:支持并发连接,适合大规模文件共享场景。
  • 事件钩子:可通过继承 FTPHandler 重写方法,实现自定义逻辑(如日志记录、传输完成后的操作)。

📌 使用方法

1. 安装

pip install pyftpdlib

2. 命令行快速启动

python -m pyftpdlib -p 21 -u cpeuser -P password -w -d ./uploads

参数说明:

  • -i 指定 IP 地址(默认 127.0.0.1)
  • -p 指定端口(默认 2121)
  • -u 用户名
  • -P 密码
  • -w 开启写权限(默认只读)
  • -d 指定目录

例如:

python -m pyftpdlib -p 2122 -u root -P 123456 -w -d /home/ftp

3. API 编程方式

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

# 创建用户认证器
authorizer = DummyAuthorizer()
authorizer.add_user("user", "12345", "/opt/ftp", perm="elradfmwMT")
authorizer.add_anonymous("/opt/ftp/pub")

# 配置处理器
handler = FTPHandler
handler.authorizer = authorizer
handler.banner = "欢迎使用 Pyftpdlib FTP 服务器"

# 启动服务器
server = FTPServer(("0.0.0.0", 21), handler)
server.max_cons = 256
server.max_cons_per_ip = 5
server.serve_forever()

📌 应用场景

  • 快速文件共享:在局域网内搭建临时 FTP 服务。
  • 设备配置管理:配合作为终端的配置文件存储/上传服务器。
  • 开发测试:模拟 FTP 服务环境,验证客户端功能。
  • 企业内部文件分发:通过用户权限控制,安全地共享文件。

📌 总结

Pyftpdlib 的优势在于 轻量、易用、可扩展。你既可以用一行命令快速启动 FTP 服务,也可以通过 API 深度定制用户权限和事件逻辑,非常适合在设备管理(如 TR‑069 配置文件上传/下载)、文件共享和测试环境中使用。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐