小豆浆 python的ftp服务端服务(pyftpdlib) www.xdoujiang.com

  • A+
所属分类:python实战
  1. python2.7.5 centos7
  2. 客户端192.168.4.97
  3. 服务端192.168.4.67 2121
  4. 一、python的ftp服务端
  5. 1、先安装pyftpdlib库
  6. root@192.168.4.67:~# pip install pyftpdlib
  7. Collecting pyftpdlib
  8.   Downloading http://mirrors.aliyun.com/pypi/packages/c5/fb/74f6425fbb7f2a87969e1aa01bb9684601de431a3488b95f64509bf985ef/pyftpdlib-1.5.3.tar.gz (183kB)
  9.     100% |████████████████████████████████| 184kB 14.6MB/s
  10. Installing collected packages: pyftpdlib
  11.   Running setup.py install for pyftpdlib ... done
  12. Successfully installed pyftpdlib-1.5.3
  13. 2、启动服务
  14. root@192.168.4.67:scripts# python 1.py 
  15. [I 2017-11-21 16:05:28] >>> starting FTP server on 192.168.4.67:2121, pid=1654 <<<
  16. [I 2017-11-21 16:05:28] concurrency model: async
  17. [I 2017-11-21 16:05:28] masquerade (NAT) address: None
  18. [I 2017-11-21 16:05:28] passive ports: None
  19. 3、使用另外1台机器连接看看
  20. root@192.168.4.97:~# lftp user:12345@192.168.4.67:2121
  21. lftp user@192.168.4.67:~> ls
  22. -rw-r--r--   1 root     root         1518 Nov 21 08:05 1.py
  23. drwxr-xr-x   2 root     root         4096 Nov 21 08:07 downloads
  24. 能看到192.168.4.67上的东西了
  25. 4、服务端日志
  26. root@192.168.4.67:scripts# python 1.py 
  27. [I 2017-11-21 16:11:12] >>> starting FTP server on 192.168.4.67:2121, pid=2007 <<<
  28. [I 2017-11-21 16:11:12] concurrency model: async
  29. [I 2017-11-21 16:11:12] masquerade (NAT) address: None
  30. [I 2017-11-21 16:11:12] passive ports: None
  31. [I 2017-11-21 16:11:33] 192.168.4.97:42692-[] FTP session opened (connect)
  32. /usr/lib/python2.7/site-packages/pyftpdlib/handlers.py:2530: RuntimeWarning: DummyAuthorizer.get_home_dir returned a non-unicode string; now casting to unicode
  33.   RuntimeWarning)
  34. [I 2017-11-21 16:11:33] 192.168.4.97:42692-[user] USER 'user' logged in.
  35. 5、相关代码
  36. #!/usr/bin/python
  37. # -*- coding: utf-8 -*-
  38. #--------------------------------------------------
  39. #Author:gongzheng
  40. #Email:85646830@163.com
  41. #FileName:1.py
  42. #Function: 
  43. #Version:1.0 
  44. #Created:2017-10-18
  45. #--------------------------------------------------
  46. from pyftpdlib.authorizers import DummyAuthorizer
  47. from pyftpdlib.handlers import FTPHandler
  48. from pyftpdlib.servers import FTPServer
  49. def main():
  50.     # Instantiate a dummy authorizer for managing 'virtual' users  
  51.     authorizer = DummyAuthorizer()
  52.     # Define a new user having full r/w permissions and a read-only  
  53.     # anonymous user  
  54.     authorizer.add_user('user','12345','.',perm='elradfmwM')
  55.     # authorizer.add_anonymous(os.getcwd())  
  56.     # Instantiate FTP handler class  
  57.     handler = FTPHandler
  58.     handler.authorizer = authorizer
  59.     # Define a customized banner (string returned when client connects)  
  60.     handler.banner = "pyftpdlib based ftpd ready."
  61.     # Specify a masquerade address and the range of ports to use for  
  62.     # passive connections.  Decomment in case you're behind a NAT.  
  63.     #handler.masquerade_address = '151.25.42.11'  
  64.     #handler.passive_ports = range(60000, 65535)  
  65.     # Instantiate FTP server class and listen on 0.0.0.0:2121  
  66.     address = ('192.168.4.67', 2121)
  67.     server = FTPServer(address, handler)
  68.     # set a limit for connections  
  69.     server.max_cons = 256
  70.     server.max_cons_per_ip = 5
  71.     # start ftp server  
  72.     server.serve_forever()
  73. if __name__ == '__main__':
  74.     main()
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

说点什么

您将是第一位评论人!

提醒
avatar