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的Bottle框架中返回静态文件和JSON对象的方法
Apr 30 Python
Python基于贪心算法解决背包问题示例
Nov 27 Python
python flask中静态文件的管理方法
Mar 20 Python
Python中max函数用于二维列表的实例
Apr 03 Python
Python机器学习库scikit-learn安装与基本使用教程
Jun 25 Python
pytorch 加载(.pth)格式的模型实例
Aug 20 Python
Python的形参和实参使用方式
Dec 24 Python
Django的CVB实例详解
Feb 10 Python
python datetime时间格式的相互转换问题
Jun 11 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
Jun 12 Python
python爬虫筛选工作实例讲解
Nov 23 Python
Pandas DataFrame求差集的示例代码
Dec 13 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判断变量的函数
2012/04/24 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
js验证模型自我实现的具体方法
2013/06/21 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
2014/11/23 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
JavaScript合并两个数组并去除重复项的方法
2015/06/13 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
javascript+html5+css3自定义提示窗口
2017/06/21 Javascript
谈谈JS中的!!
2017/12/07 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
python代理工具mitmproxy使用指南
2019/07/04 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
以下的初始化有什么区别
2013/12/16 面试题
英语专业推荐信
2013/11/16 职场文书
诚信考试承诺书
2014/03/27 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
先进党员事迹材料
2014/12/24 职场文书
大足石刻导游词
2015/02/02 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书