ftp_server.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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='myftpserver.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("ftpuser", "123456", "ftp_file/ykm_cbd", perm="elradfmw")
  23. # 依科曼测试ftp路径
  24. authorizer.add_user("ykm_user", "123456", "ftp_file/ykm_cbd", perm="elradfmw")
  25. # 孢子仪ftp路径
  26. authorizer.add_user("ftpbzyuser", "123456", "ftp_file/bzy_photo", perm="elradfmw")
  27. # 监控定时拍照ftp路径
  28. authorizer.add_user("jkuser", "123456", "ftp_file/jk_photo", perm="elradfmw")
  29. # 性诱设备拍照ftp路径
  30. authorizer.add_user("sexuser", "yf_123456", "ftp_file/sex_photo", perm="elradfmw")
  31. # 糖醋测报拍照ftp路径
  32. authorizer.add_user("tccbuser", "yf123456", "ftp_file/tccb_photo", perm="elradfmw")
  33. # # 测试程序
  34. # authorizer.add_user("sssuser", "yf_123456", "ftp_file/ssssex_photo", perm="elradfmw")
  35. # 升级文件路径
  36. authorizer.add_user("updateuser", "123456", "/data/yfwlw/update", perm="elradfmw")
  37. # authorizer.add_user("updateuser", "123456", "/home/web/yfwlw/update", perm="elradfmw")
  38. #这个是添加匿名用户,任何人都可以访问,如果去掉的话,需要输入用户名和密码,
  39. # 添加匿名用户 只需要路径
  40. # authorizer.add_anonymous("d:/")
  41. # 初始化ftp句柄
  42. handler = FTPHandler
  43. handler.authorizer = authorizer
  44. #添加被动端口范围
  45. handler.passive_ports = range(2000, 2333)
  46. # 下载上传速度设置
  47. dtp_handler = ThrottledDTPHandler
  48. dtp_handler.read_limit = 500 * 1024 #300kb/s
  49. dtp_handler.write_limit = 500 * 1024 #300kb/s
  50. # 开启服务器
  51. # 监听ip 和 端口
  52. server = FTPServer(("0.0.0.0", 2121), handler)
  53. # 大服务器内网地址:172.16.220.3
  54. # server = FTPServer(("172.16.220.3", 21), handler)
  55. # 小服务器内网地址:172.24.159.211
  56. # server = FTPServer(("172.24.159.211", 21), handler)
  57. # server = FTPServer(("127.0.0.1", 21), handler)
  58. # 最大连接数
  59. server.max_cons = 500
  60. server.max_cons_per_ip = 15
  61. # 开始服务,自带日志打印信息
  62. server.serve_forever()