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 相关文章推荐
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
python实现将英文单词表示的数字转换成阿拉伯数字的方法
Jul 02 Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 Python
Python遍历目录中的所有文件的方法
Jul 08 Python
win与linux系统中python requests 安装
Dec 04 Python
python使用turtle库绘制树
Jun 25 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
Apr 11 Python
pytorch中图像的数据格式实例
Feb 11 Python
Python OrderedDict字典排序方法详解
May 21 Python
关于Theano和Tensorflow多GPU使用问题
Jun 19 Python
python接口自动化之ConfigParser配置文件的使用详解
Aug 03 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 缓存函数代码
2008/08/27 PHP
探讨PHP调用时间格式的参数详解
2013/06/06 PHP
PHP错误和异长常处理总结
2014/03/06 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
克隆javascript对象的三个方法小结
2011/01/12 Javascript
js中有关IE版本检测
2012/01/04 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
webpack打包单页面如何引用的js
2017/06/07 Javascript
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
vant实现购物车功能
2020/06/29 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
Python操作rabbitMQ的示例代码
2019/03/19 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
wxPython实现分隔窗口
2019/11/19 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
python opencv实现图像配准与比较
2021/02/09 Python
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
团支部建设方案
2014/05/02 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
2015年扫黄打非工作总结
2015/05/13 职场文书
投诉信范文
2015/07/02 职场文书
资产移交协议书
2016/03/24 职场文书
Nginx + consul + upsync 完成动态负载均衡的方法详解
2021/03/31 Servers
MySQL 数据类型选择原则
2021/05/27 MySQL