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修改Excel数据的实例代码
Nov 01 Python
对django xadmin自定义菜单的实例详解
Jan 03 Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 Python
Python的bit_length函数来二进制的位数方法
Aug 27 Python
详解Python time库的使用
Oct 10 Python
Python上下文管理器全实例详解
Nov 12 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
Dec 20 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
django haystack实现全文检索的示例代码
Jun 24 Python
详解anaconda离线安装pytorchGPU版
Sep 08 Python
Python 发送SMTP邮件的简单教程
Jun 24 Python
Python requests用法和django后台处理详解
Mar 19 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
一个好用的分页函数
2006/11/16 PHP
PHP删除HTMl标签的实现代码
2013/06/30 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
JS往数组中添加项性能分析
2015/02/25 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
Javascript BOM学习小结(六)
2015/11/26 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
JS查找数组中重复元素的方法详解
2017/06/14 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
angular json对象push到数组中的方法
2018/02/27 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
python装饰器深入学习
2018/04/06 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
Linux操作面试题
2012/05/16 面试题
超市中秋节活动方案
2014/02/12 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
二年级评语大全
2014/04/23 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
安全演讲稿开场白
2014/08/25 职场文书
场地使用证明模板
2014/10/25 职场文书
企业党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书