当前位置: 首页 > 工具软件 > pyftpdlib > 使用案例 >

python搭建ftp_Python之pyftpdlib搭建FTP服务

司徒啸
2023-12-01

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

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

0

 类似资料: