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 相关文章推荐
Django的信号机制详解
May 05 Python
python使用sqlite3时游标使用方法
Mar 13 Python
flask框架实现连接sqlite3数据库的方法分析
Jul 16 Python
python 剪切移动文件的实现代码
Aug 02 Python
PyQt5显示GIF图片的方法
Jun 17 Python
基于python调用psutil模块过程解析
Dec 20 Python
Pandas时间序列基础详解(转换,索引,切片)
Feb 26 Python
python自动脚本的pyautogui入门学习
Apr 01 Python
Python实现一个简单的毕业生信息管理系统的示例代码
Jun 08 Python
Pandas直接读取sql脚本的方法
Jan 21 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
Apr 24 Python
Selenium浏览器自动化如何上传文件
Apr 06 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
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
php二维数组合并及去重复的方法
2015/03/04 PHP
php导出中文内容excel文件类实例
2015/07/06 PHP
PHP简单生成缩略图相册的方法
2015/07/29 PHP
php for 循环使用的简单实例
2016/06/02 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
JavaScript的目的分析
2007/01/05 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
JS简单实现动画弹出层效果
2015/05/05 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
JavaScript检查子字符串是否在字符串中的方法
2016/02/03 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
[02:14]2016国际邀请赛中国区预选赛Ehome晋级之路
2016/07/01 DOTA
python处理中文编码和判断编码示例
2014/02/26 Python
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
美国照明、家居装饰和家具购物网站:Bellacor
2017/09/20 全球购物
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
公司承诺书格式
2014/05/21 职场文书
多媒体教室标语
2014/06/26 职场文书
自查自纠工作总结
2014/10/15 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书