Python代码使用 Pyftpdlib实现FTP服务器功能


Posted in Python onJuly 22, 2019

当你想快速共享一个目录的时候,这是特别有用的,只需要1行代码即可实现。

FTP 服务器,在此之前我都是使用Linux的vsftpd软件包来搭建FTP服务器的,现在发现了利用pyftpdlib可以更加简单的方法即可实现FTP服务器的功能。

环境要求

  • Python 2.7
  • Windows / Linux

环境搭建

pip install pyftpdlib

一行代码实现FTP服务器

通过Python的-m选项作为一个简单的独立服务器来运行,当你想快速共享一个目录的时候,这是特别有用的。
在需要共享的目录下执行如下命令即可把当前目录共享出去(匿名登录)

python -m pyftpdlib

至此一个简单的FTP服务器已经搭建完成,访问 ftp://127.0.0.1:2121 即可

(默认IP为 127.0.0.1 、端口为 2121 )

效果图

Python代码使用 Pyftpdlib实现FTP服务器功能

可选参数

  • -i 指定IP地址(默认为本机的IP地址)
  • -p 指定端口(默认为2121)
  • -w 写权限(默认为只读)
  • -d 指定目录 (默认为当前目录)
  • -u 指定用户名登录
  • -P 设置登录密码

简单示例

上述的一行命令已经可以实现一个简单的FTP服务器,但是要搭建一个功能强大完善的FTP服务所涉及到的配置较多,这时需要使用Pyftpdlib提供的 API 来编写。如下是一个简单的示例

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

# 实例化DummyAuthorizer来创建ftp用户
authorizer = DummyAuthorizer()
# 参数:用户名,密码,目录,权限
authorizer.add_user('user', '12345', '/opt/pyftp/test', perm='elradfmwMT')
# 匿名登录
# authorizer.add_anonymous('/home/nobody')
handler = FTPHandler
handler.authorizer = authorizer
# 参数:IP,端口,handler
server = FTPServer(('192.168.56.100', 21), handler)
server.serve_forever()

perm权限选项

读取权限:

  • "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命令)

参考

Pyftpdlib文档:http://pyftpdlib.readthedocs.io/en/latest/index.html

总结

以上所述是小编给大家介绍的Python代码使用 Pyftpdlib实现FTP服务器功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python的类实例属性访问规则探讨
Jan 30 Python
十个Python程序员易犯的错误
Dec 15 Python
python实现汉诺塔方法汇总
Jul 25 Python
Python做简单的字符串匹配详解
Mar 21 Python
基于Python中capitalize()与title()的区别详解
Dec 09 Python
python构建深度神经网络(续)
Mar 10 Python
基于python生成器封装的协程类
Mar 20 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
python利用tkinter实现图片格式转换的示例
Sep 28 Python
python利用platform模块获取系统信息
Oct 09 Python
Python基于template实现字符串替换
Nov 27 Python
Python与C/C++的相互调用案例
Mar 04 Python
超简单的Python HTTP服务
Jul 22 #Python
对python 中re.sub,replace(),strip()的区别详解
Jul 22 #Python
django框架CSRF防护原理与用法分析
Jul 22 #Python
全面了解django的缓存机制及使用方法
Jul 22 #Python
python logging模块书写日志以及日志分割详解
Jul 22 #Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
Jul 22 #Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
Jul 22 #Python
You might like
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
js对象之JS入门之Array对象操作小结
2011/01/09 Javascript
jquery插件jSignature实现手动签名
2015/05/04 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
2019/03/19 Javascript
详解Vue中的scoped及穿透方法
2019/04/18 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
react的hooks的用法详解
2020/10/12 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
python正则分析nginx的访问日志
2017/01/17 Python
Django Admin 实现外键过滤的方法
2017/09/29 Python
python生成二维码的实例详解
2017/10/29 Python
python内存监控工具memory_profiler和guppy的用法详解
2019/07/29 Python
Pytorch根据layers的name冻结训练方式
2020/01/06 Python
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
大课间活动制度
2014/01/18 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
公司离职证明范本(汇总)
2014/09/10 职场文书
2015年女生节活动总结
2015/02/27 职场文书
付款证明模板
2015/06/19 职场文书
安全生产学习心得体会
2016/01/18 职场文书
导游词之天津古文化街
2019/11/09 职场文书
基于Golang 高并发问题的解决方案
2021/05/08 Golang
Spring Boot实现文件上传下载
2022/08/14 Java/Android