python实现ftpserver

相关文档

pyftpdlib github
http://pyftpdlib.readthedocs.io/en/latest/benchmarks.html

安装

1
pip install pyftpdlib

使用例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python
# coding:utf-8
__author__ = 'carey'
__date__ = '2018/1/2'
import logging
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
# 用户
authorizer = DummyAuthorizer()
authorizer.add_user('carey', 'passwd', '/root', perm='elradfmwMT', msg_login='welcome to ftp server')
authorizer.add_anonymous('/root')
handler = FTPHandler
handler.authorizer = authorizer
# 日志定义
logging.basicConfig(filename='./ftp.log', level=logging.DEBUG)
# ftpserver
server = FTPServer(('0.0.0.0', 21), handler)
server.max_cons = 256
server.max_cons_per_ip = 20
server.serve_forever()

权限

  • 读取权限:
    • e =更改目录(CWDCDUP命令)
    • l =列表文件(LISTNLSTSTATMLSDMLSTSIZE命令)
    • r =从服务器检索文件(RETR命令)
  • 写入权限:
    • a =将数据追加到现有文件(APPE命令)
    • d =删除文件或目录(DELERMD命令)
    • f =重命名文件或目录(RNFRRNTO命令)
    • m =创建目录(MKD命令)
    • w =将文件存储到服务器(STORSTOU命令)
    • M =更改文件模式/权限(SITE CHMOD命令)
    • T =更改文件修改时间(SITE MFMT命令)

命令行方式

1
2
3
4
5
python -m pyftpdlib
[I 2018-01-02 11:06:26] >>> starting FTP server on 0.0.0.0:2121, pid=27415 <<<
[I 2018-01-02 11:06:26] concurrency model: async
[I 2018-01-02 11:06:26] masquerade (NAT) address: None
[I 2018-01-02 11:06:26] passive ports: None
  • 可选参数
    • -i 指定IP地址(默认为本机的IP地址)
    • -p 指定端口(默认为2121
    • -w 写权限(默认为只读)
    • -d 指定目录 (默认为当前目录)
    • -u 指定用户名登录
    • -P 设置登录密码

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器