使用python搭建FTP服务非常容易,且非常稳定,更重要的是可以实现一些精细化的控制,例如精细的访问权限配置,详细的日志记录等工作
这里是使用了pyftpdlib模块
1. 安装
pip install pyftpdlib
2. 使用
快速搭建一个简单的FTP服务:
python -m pyftpdlib -p 21 即可在执行命令所在的目录下建立一个端口为21的供下载文件的FTP服务
搭建一个具有访问权限的FTP服务
from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler, ThrottledDTPHandler from pyftpdlib.servers import FTPServer from pyftpdlib.log import LogFormatter import logging logger = logging.getLogger() logger.setLevel(logging.INFO) ch = logging.StreamHandler() fh = logging.FileHandler(filename='myftpserver.log', encoding='utf-8') # 默认追加到日志文件 ch.setFormatter(LogFormatter()) fh.setFormatter(LogFormatter()) logger.addHandler(ch) # 将日志输出到屏幕 logger.addHandler(fh) # 将日志输出至文件 authorizer = DummyAuthorizer()
# 添加用户权限与路径,参数(用户名,密码,用户目录,权限(见说明)) authorizer.add_user('lanlang', '123456', "./files", perm="elradfmw")
# 添加匿名用户,只添加路径 authorizer.add_anonymous("./files") handler = FTPHandler handler.authorizer = authorizer
# 添加被动端口范围 handler.passive_ports = range(2000, 2333) # 下载上传速度设置 dtp_handler = ThrottledDTPHandler dtp_handler.read_limit = 300 * 1024 # 300kb/s dtp_handler.write_limit = 300 * 1024 # 300kb/s handler.dtp_handler = dtp_handler # 监听IP和端口,Linux中需要root用户才能使用21端口 server = FTPServer(('0.0.0.0', 21), handler) # 最大连接数 server.max_cons = 150 server.max_cons_per_ip = 15 server.serve_forever()
权限说明:
读权限:
代码 | 说明 |
e | 改变文件目录 |
l | 列出文件 |
r | 从服务器接收文件 |
写权限:
M | 文件传输模式(通过FTP设置文件权限) |
a | 文件上传 |
d | 删除文件 |
f | 文件重命名 |
m | 创建文件 |
w |
写权限 |