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网页请求urllib2模块简单封装代码
Feb 07 Python
Python中max函数用于二维列表的实例
Apr 03 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
Dec 24 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
python腾讯语音合成实现过程解析
Aug 01 Python
PyTorch实现更新部分网络,其他不更新
Dec 31 Python
Python IDLE或shell中切换路径的操作
Mar 09 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
May 11 Python
Pycharm常用快捷键总结及配置方法
Nov 14 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 Python
Python find()、rfind()方法及作用
Dec 24 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出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
php微信公众平台开发(四)回复功能开发
2016/12/06 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
2019/10/16 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
jQuery实现开关灯效果
2020/08/02 jQuery
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
Python脚本实现格式化css文件
2015/04/08 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
python实现给微信公众号发送消息的方法
2017/06/30 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
推荐10个CSS3 制作的创意下拉菜单效果
2014/02/11 HTML / CSS
工商管理毕业生推荐信
2013/12/24 职场文书
《珍珠泉》教学反思
2014/02/20 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
英语教师个人总结
2015/02/09 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
APP界面设计技巧和注意事项
2022/04/29 杂记