用Python编写的FTP SERVER端脚本

发布时间 2023-09-16 15:28:29作者: donfag
 1 from pyftpdlib.authorizers import DummyAuthorizer
 2 from pyftpdlib.handlers import FTPHandler,ThrottledDTPHandler
 3 from pyftpdlib.servers import FTPServer
 4 from pyftpdlib.log import LogFormatter
 5 import logging
 6 
 7 #记录日志,这里既输出到屏幕又输出到文件,方便日志查看:
 8 logger = logging.getLogger()
 9 logger.setLevel(logging.INFO)
10 ch = logging.StreamHandler()
11 fh = logging.FileHandler(filename='Myftpserver.log',encoding='utf-8')
12 ch.setFormatter(LogFormatter())
13 fh.setFormatter(LogFormatter())
14 logger.addHandler(ch)   #将日志输出至屏幕
15 logger.addHandler(fh)   #将日志输出至文件
16 
17 #实例化虚拟用户,这是FTP验证首要条件
18 authorizer = DummyAuthorizer()
19 #添加用户权限和路径,括号内的参数是(用户名,密码,用户目录,权限),可以为不同的用户添加不同的目录和权限
20 authorizer.add_user("user","123456789","d:/",perm="elradfmw")
21 #添加匿名用户,只需要路径
22 #authorizer.add_anonymous("d:/")
23 #初始化FTP句柄
24 handler = FTPHandler
25 handler.authorizer = authorizer
26 #添加被动端口范围
27 handler.passive_ports = range(2000,2333)
28 #下载上传速度设置
29 dtp_handler = ThrottledDTPHandler
30 dtp_handler.read_limit = 300 * 1024 #300kb/s
31 dtp_handler.write_limit = 300 * 1024
32 handler.dtp_handler = dtp_handler
33 #监听IP和端口,Linux需要root用户才能使用21端口
34 server = FTPServer(("0.0.0.0",21),handler)
35 #最大连接数
36 server.max_cons = 160
37 server.max_cons_per_ip = 20
38 #开始服务,自带日志打印信息
39 server.serve_forever()