Python之pyftpdlib搭建FTP服务

1.通过pyftpdlib模块搭建服务

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="ftpserver.log",encoding="utf-8")
ch.setFormatter(LogFormatter())
fh.setFormatter(LogFormatter())
#将日志输出到屏幕
logger.addHandler(ch)
#将日志输出到文件
logger.addHandler(fh)

#实例化虚拟用户,这是FTP验证首要条件。
authorizer = DummyAuthorizer()
#添加用户,权限,目录
authorizer.add_user("user","123456","e:Pic",perm="elradfmw")
#匿名用户
#authorizer.add_anonymous("e:Pic")
#初始化ftp句柄
handler = FTPHandler
handler.authorizer = authorizer
#添加被动端口范围
handler.passive_ports = range(2000,2100)
#下载上传速度设置
dtp_handler = ThrottledDTPHandler
dtp_handler.read_limit = 300 * 1024 #300k
dtp_handler.write_limit = 300 * 1024
handler.dtp_handler = dtp_handler
#监听ip和端口,linux需要root用户才能运行21端口
server = FTPServer(("0.0.0.0",21),handler)
#最大连接数
server.max_cons = 100
server.max_cons_per_ip = 10
 
#开始服务,自带日志打印信息
server.serve_forever()

2.权限解释

读取权限:

  • “e” =更改目录(CWD,CDUP命令)
  • “l” =列表文件(LIST,NLST,STAT,MLSD,MLST,SIZE命令)
  • “r” =从服务器检索文件(RETR命令)

写入权限:

  • “a” =将数据追加到现有文件(APPE命令)
  • “d” =删除文件或目录(DELE,RMD命令)
  • “f” =重命名文件或目录(RNFR,RNTO命令)
  • “m” =创建目录(MKD命令)
  • “w” =将文件存储到服务器(STOR,STOU命令)
  • “M”=更改文件模式/权限(SITE CHMOD命令)
  • “T”=更改文件修改时间(SITE MFMT命令)

参考文档:https://pyftpdlib.readthedocs.io/en/latest/index.html


「 文章如果对你有帮助,请点个赞哦^^ 」 

0