python开发ftp服务器

学习了大约快一个月的python,现在开始有意识做一些项目。

据我了解,python现在更多的是用于自动化运维方面,例如做一些服务器上审计堡垒机,分布式监控,还有做web的后台开发。

今天想在实验室搭建一个ftp服务器,用来分享一些资料,于是就想到了利用python来进行开发。

ftp服务器的本质还是利用socket编程来实现,只不过遵循特定的协议而已,我查了一下协议是RFC959。

当然为了不重复造轮子,先看看有没有开源的lib,百度一下找到了pyftpdlib这个库,查看了一下这个库,发现代码量并不大,之后的博客打算进行源码分析。

不过现在当然是快速的使用。

  首先当然是安装pyftpdlib,学过python的肯定知道使用 pip install pyftpdlib来安装。然后看了一些这个库的说明文档,就可以写代码了,也就15行左右。

我使用的工具是pycharm,下面把代码附在下面有详细的注释。

#coding:utf-8

from pyftpdlib.authorizers import DummyAuthorizer

from pyftpdlib.handlers import FTPHandler

from pyftpdlib.servers import FTPServer

#新建一个用户组

authorizer = DummyAuthorizer()

#将用户名,密码,指定目录,权限 添加到里面

authorizer.add_user("fan", "root", "D:/", perm="elr")#adfmw

#这个是添加匿名用户,任何人都可以访问,如果去掉的话,需要输入用户名和密码,可以自己尝试

authorizer.add_anonymous("D:/")

handler = FTPHandler

handler.authorizer = authorizer

#开启服务器

server = FTPServer(("127.0.0.1", 21), handler)

server.serve_forever()

然后将程序运行起来,接下来看一下效果,在浏览器上ftp://localhost/

nice,只要大家在同一个局域网之内就可以分享了.

今天就到此为止,之后有时间,会对这个库进行源码分析,敬请期待

如果觉得还不错,记得打赏呦。

原文发布于微信公众号 - 七夜安全博客(qiye_safe)

原文发表时间:2016-03-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

Linux包系列的知识(附:Ubuntu16.04升级到18.04的案例)

Linux基础:https://www.cnblogs.com/dunitian/p/4822808.html#linux

2206
来自专栏Java帮帮-微信公众号-技术文章全总结

Linux常用命令

Linux常用命令 常用指令 ls   显示文件或目录 -l 列出文件详细信息l(list) -a ...

5326
来自专栏coder修行路

Python爬虫番外篇之Cookie和Session

关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整...

2397
来自专栏Java3y

Tomcat+Servlet面试题都在这里

下面是我整理下来的Servlet知识点: ? 图上的知识点都可以在我其他的文章内找到相应内容。 Tomcat常见面试题 Tomcat的缺省端口是多少,怎么修改 ...

4303
来自专栏Albert陈凯

linux命令sed与awk是干什么用的

非常强大的文本操纵工具,sed,awk,grep 这个三个命令 都是操作文本文件的 unix系统有几个特点: 对于内核而言,unix文件都是字节序列。io设备也...

3508
来自专栏张善友的专栏

Windows安装和使用zookeeper

之前整理过一篇文章《zookeeper 分布式锁服务》,本文介绍的 Zookeeper 是以 3.4.5 这个稳定版本为基础,最新的版本可以通过官网 http:...

2509
来自专栏魏艾斯博客www.vpsss.net

linux 服务器安全狗卸载图文教程

3174
来自专栏Java技术分享圈

杨老师课堂之JavaEE三大框架Struts2入门第一课

...

693
来自专栏维C果糖

详述 IntelliJ IDEA 中恢复代码的方法

在咱们正常开发项目的时候,难免遇到在开发过程中由于某种原因,想要将代码恢复到前一版本的情景。特别是在咱们删除了某些代码,想要恢复之前删除的代码的时候,了解这个在...

2218
来自专栏散尽浮华

如何查询一个进程下面的线程数(进程和线程区别)

在平时工作中,经常会听到应用程序的进程和线程的概念,那么它们两个之间究竟有什么关系或不同呢? 一、对比进程和线程 1)两者概念 . 进程是具有一定独立功能的程序...

3149

扫码关注云+社区

领取腾讯云代金券