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爬取网易云音乐热门评论
Mar 31 Python
基于hashlib模块--加密(详解)
Jun 21 Python
Python设计模式之工厂模式简单示例
Jan 09 Python
python实现生成字符串大小写字母和数字的各种组合
Jan 01 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
Jan 23 Python
在Django下测试与调试REST API的方法详解
Aug 29 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
Feb 13 Python
python 项目目录结构设置
Feb 14 Python
python tkinter GUI绘制,以及点击更新显示图片代码
Mar 14 Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
Feb 23 Python
Python数据结构之队列详解
Mar 21 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函数method_exists()与is_callable()的区别
2013/06/21 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
使用vue.js实现联动效果的示例代码
2017/01/10 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
python获得图片base64编码示例
2014/01/16 Python
python连接MySQL数据库实例分析
2015/05/12 Python
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
python删除文本中行数标签的方法
2018/05/31 Python
PyQt5实现简单数据标注工具
2019/03/18 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
Django中的session用法详解
2020/03/09 Python
PyQt5实现画布小程序
2020/05/30 Python
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
英国当代时尚和街头服饰店:18montrose
2018/12/15 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
运动会开幕式主持词
2014/03/28 职场文书
2015年学生会部门工作总结
2015/04/21 职场文书
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技