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实现的二维码生成小软件
Jul 11 Python
python私有属性和方法实例分析
Jan 15 Python
简述Python中的进程、线程、协程
Mar 18 Python
python 捕获shell脚本的输出结果实例
Jan 04 Python
Python基于matplotlib绘制栈式直方图的方法示例
Aug 09 Python
TensorFlow实现创建分类器
Feb 06 Python
python实现百度语音识别api
Apr 10 Python
python对象与json相互转换的方法
May 07 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
Sep 01 Python
Python基础 括号()[]{}的详解
Nov 07 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 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
PHP实现一个多功能购物网站的案例
2017/09/13 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
javascript 全等号运算符使用说明
2010/05/31 Javascript
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
JSONP之我见
2015/03/24 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
mint-ui在vue中的使用示例
2018/04/05 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
2019/02/19 jQuery
layer 关闭指定弹出层的例子
2019/09/25 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
python实现汉诺塔方法汇总
2016/07/25 Python
情人节快乐! python绘制漂亮玫瑰
2020/08/18 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
python 实现识别图片上的数字
2019/07/30 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
英国床垫在线:Mattress Online
2016/12/07 全球购物
华纳兄弟工作室的官方授权商店:WB Shop
2018/11/30 全球购物
遗嘱继承公证书
2014/04/09 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
幼师求职自荐信
2015/03/26 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python