ftp_bzy_server.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. # -*- coding:utf8 -*-
  2. #!/usr/bin/env python
  3. #coding:utf-8
  4. from pyftpdlib.authorizers import DummyAuthorizer
  5. from pyftpdlib.handlers import FTPHandler,ThrottledDTPHandler
  6. from pyftpdlib.servers import FTPServer
  7. from pyftpdlib.log import LogFormatter
  8. import logging
  9. #记录日志,默认情况下日志仅输出到屏幕(终端)
  10. logger = logging.getLogger()
  11. logger.setLevel(logging.INFO)
  12. ch = logging.StreamHandler()
  13. fh = logging.FileHandler(filename='bzyftpserver.log')
  14. ch.setFormatter(LogFormatter())
  15. fh.setFormatter(LogFormatter())
  16. logger.addHandler(ch) #将日志输出至屏幕
  17. logger.addHandler(fh) #将日志输出至文件
  18. # 实例化虚拟用户,这是FTP验证首要条件
  19. authorizer = DummyAuthorizer()
  20. # 添加用户权限和路径,括号内的参数是(用户名, 密码, 用户目录, 权限),可以为不同的用户添加不同的目录和权限
  21. # 孢子仪ftp路径
  22. authorizer.add_user("ftpbzytest", "123456", "ftp_file/bzy_test", perm="elradfmw")
  23. #这个是添加匿名用户,任何人都可以访问,如果去掉的话,需要输入用户名和密码,
  24. # 添加匿名用户 只需要路径
  25. # authorizer.add_anonymous("d:/")
  26. # 初始化ftp句柄
  27. handler = FTPHandler
  28. handler.authorizer = authorizer
  29. #添加被动端口范围
  30. handler.passive_ports = range(2000, 2333)
  31. # 下载上传速度设置
  32. dtp_handler = ThrottledDTPHandler
  33. dtp_handler.read_limit = 500 * 1024 #300kb/s
  34. dtp_handler.write_limit = 500 * 1024 #300kb/s
  35. # 开启服务器
  36. # 监听ip 和 端口,linux里需要root用户才能使用21端口
  37. server = FTPServer(("0.0.0.0", 9999), handler)
  38. # 大服务器内网地址:172.16.220.3
  39. # server = FTPServer(("172.16.220.3", 21), handler)
  40. # 小服务器内网地址:172.24.159.211
  41. # server = FTPServer(("172.24.159.211", 21), handler)
  42. # server = FTPServer(("127.0.0.1", 21), handler)
  43. # 最大连接数
  44. server.max_cons = 500
  45. server.max_cons_per_ip = 15
  46. # 开始服务,自带日志打印信息
  47. server.serve_forever()