文档章节

手把手教你用1行Python代码实现FTP服务器 -- Pyftpdlib

kangvcar
 kangvcar
发布于 2017/12/30 20:38
字数 621
阅读 4957
收藏 95

当你想快速共享一个目录的时候,这是特别有用的,只需要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

效果图

可选参数

  • -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

© 著作权归作者所有

共有 人打赏支持
kangvcar
粉丝 59
博文 67
码字总数 74741
作品 0
广州
运维
私信 提问
加载中

评论(12)

junfeng777
junfeng777
请教下 这个只能局域网内吗?为什么我路由对外转发端口 外部访问不了?
纳兰清风
纳兰清风
我们都是用nc传文件。。。。
loubobooo
loubobooo
报了 /usr/bin/python: pyftpdlib is a package and cannot be directly execute ??
_hadooper
_hadooper
1
kangvcar
kangvcar

引用来自“lsf0”的评论

可以传输含中文的文件吗?
Why not?
理工小强
理工小强
还是curl吧
l
lsf0
可以传输含中文的文件吗?
hsl727261250
hsl727261250
python -m http.server 80
kangvcar
kangvcar

引用来自“wei2011”的评论

不错,有用
感谢您的肯定
kangvcar
kangvcar

引用来自“开源中国首席打酱油啊哎滴”的评论

py2: SimpleHTTPServer
py3: http.server
也可以实现简单的共享目录
嘿嘿。还请多多指点迷津
FTP Server by python (pyftpdlib)

0 .背景 最近,需要做一个保存网络摄像机上传的图片,并进行处理的程序,摄像机是通过移动侦测和遮挡侦测发送图片到ftp服务器上. 为了实现上述目标,考虑编写一套ftp server的代码,这样不仅可以保...

gaoshine
2018/01/12
0
0
linux 学习笔记 (3) —— 使用python

1.安装python 2.6 ----------参考 http://www.cnblogs.com/end/archive/2012/10/24/2736841.html 安装好后,直接yum list python26,如果出现这个包,说明正常了。yum这个工具的等待时间很长...

TdadaT
2012/10/30
0
0
一句python代码搭建FTP服务

环境搭建: python windows/linux pip install pyftpdlib (安装失败请到这里下载:https://pypi.python.org/pypi/pyftpdlib/) 一行代码搞定的事: 到你打算分享的目录下执行,python -m pyf...

_周小董
2018/05/01
0
0
python实现FTP服务器

FTP服务的主动模式和被动模式 在开始之前,先聊一下FTP的主动模式和被动模式,两者的区别 , 用两张图来表示可能会更加清晰一些: 主动模式: 主动模式工作过程: 1. 客户端以随机非特权端口...

baby神啊
2017/10/29
0
0
高性能Ftp服务器--FeiTP-server

1.Very high-preformance FTP Server about 10X than vsFTP server 2.Base on pyhton lib (pyftpdlib) 3.Use Multi-CPU Tech on python lib(multiprocess) 4.stable and expand your own log......

吴小飞
2011/11/10
3.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

rabbitMQ 在spring 的使用

一、准备工作 maven依赖 <dependency>  <groupId>com.rabbitmq</groupId>  <artifactId>amqp-client</artifactId>  <version>4.0.2</version></dependency> <dependency......

狼王黄师傅
昨天
1
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
1
0
大数据教程(11.8)Hive1.2.2简介&初体验

上一篇文章分析了Hive1.2.2的安装,本节博主将分享Hive的体验&Hive服务端和客户端的使用方法。 一、Hive与hadoop直接的关系 Hive利用HDFS存储数据,利用MapReduce查询数据。 二、Hive与传统数...

em_aaron
昨天
3
0
跟我学Spring Cloud(Finchley版)-15-Hystrix监控详解

Hystrix提供了监控Hystrix Command的能力,本节来详细探讨。 监控端点与数据 应用整合Hystrix,同时应用包含spring-boot-starter-actuator 依赖,就会存在一个/actuator/hystrix.stream 端点...

周立_ITMuch
昨天
6
0
day26:shell题

1、 判断当前主机的CPU生产商,其信息在/proc/cpuinfo文件中vendor id一行中。 如果其生产商为AuthenticAMD,就显示其为AMD公司; 如果其生产商为GenuineIntel,就显示其为Intel公司; 否则,...

芬野de博客
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部