• Python一秒搭建ftp服务器,帮助你在局域网共享文件【华为云技术分享】


    “老板 来碗面”
    “要啥面?”
    “内牛满面..”

    最近项目上的事情弄得人心累,本来是帮着兄弟项目写套入口代码,搞着搞着就被拉着入坑了。搞开发的都知道,最怕弄这种项目portal的东西,你调用一堆东西,结果各种调用报错都反馈到你这里,导致的结果就是除了啥问题都找你。

    最形象的比喻就是,眼前一栋楼,你是看门的。电梯坏了找你、住户被盗了找你、连谁家下水不通了也找你,各种无厘头的破事儿,我就想送出一张图…

    共享文件

    熟悉Python的朋友们都知道,python自带了一个Simple HTTP Server,可以使用一行代码完成文件的局域网共享操作。
    首先进入你需要设置的http服务器目录 (我以自己电脑路径:F:/Working~Study) ,即进入到该目录下,然后:

    • python2: python -m SimpleHTTPServer port

    • python3: python -m http.server port
      我是用一个8888的端口启动服务,最终的共享效果,如下图:

    通过一行代码,我们完成了文件共享的http服务,但这个服务有几个问题,仅提供了下载功能无法上传,最重要的是没有权限控制功能,这就极其不安全了!该如何解决这个问题呢?我之前用Flask写了一个功能更完善的httpserver:


    喜欢的朋友可以去看看这篇历史文章: https://www.jianshu.com/p/a5c4dca321f2
    通过自己编码的方式实现了相关功能,但是能否想httpserver一样更快速的搭建一个文件共享服务器呢?此时,你应该想到ftp服务器!没错,ftp服务器不仅可以达到文件共享的大前提,还能通过设置用户名密码的方式来实现权限管理。用Python实现它麻烦么?不麻烦,也只需要一行代码!

    Ftp服务器搭建

    模块安装

    python没有内置ftp模块,但要使用它却很简单,我们只需要简单的通过pip安装即可:
    pip install pyftpdlib

    简单共享

    模块安装完成后,我们找到需要共享的目录,然后启动cmd后,输入:
    python -m pyftpdlib -p 21
    之后浏览器登陆ftp://ip:port,这样就开启了一个最简单的ftp共享服务。
    首先我们使用浏览器登陆看下效果:

    之后,我们在使用xftp工具登陆:

    但此时,我们只是通过匿名用户anonymous,密码空的方式进行访问,只能使用ftp下载功能,而无法上传…

    高级使用

    简单的ftp搭建方式,肯定不满足我们的要求,那么我么就需要进行二次开发了!但也仅仅需要几行代码而已:

    简单的ftp搭建方式,肯定不满足我们的要求,那么我么就需要进行二次开发了!但也仅仅需要几行代码而已:

     1 # -*- coding: utf-8 -*-
     2 # @Author   : 王翔
     3 # @JianShu  : 清风Python
     4 # @Date     : 2019/8/30 1:26
     5 # @Software : PyCharm
     6 # @version  :Python 3.7.3
     7 # @File     : PythonFtp.py
     8 
     9 
    10 from pyftpdlib.handlers import FTPHandler
    11 from pyftpdlib.servers import FTPServer
    12 from pyftpdlib.authorizers import DummyAuthorizer
    13 
    14 authorizer = DummyAuthorizer()
    15 authorizer.add_user('python', '123456', 'F:\Working~Study', perm='elradfmwM')
    16 handler = FTPHandler
    17 handler.authorizer = authorizer
    18 
    19 server = FTPServer(('0.0.0.0', 8888), handler)
    20 server.serve_forever()

    不管是windows还是linux服务器下,你还能想到比python搭建FTP服务器更简单的方式吗?哈哈…

    The End

    OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。
    期待你关注我的公众号清风Python,如果觉得不错,希望能动动手指转发给你身边的朋友们。

    作者:清风Python

    HDC.Cloud 华为开发者大会2020 即将于2020年2月11日-12日在深圳举办,是一线开发者学习实践鲲鹏通用计算、昇腾AI计算、数据库、区块链、云原生、5G等ICT开放能力的最佳舞台。

    欢迎报名参会

  • 相关阅读:
    Servlet中通过过滤器实现统一的手动编码(解决中文乱码)
    【原】使用Maven完成自动化打包并部署到Linux服务器下(Tomcat7)
    XListview的下拉刷新、上拉加载、用Pull解析XML
    gson解析
    数据库查询
    Android中用友盟实现QQ的第三方登录
    Listview和checkbox多选
    ScrollView嵌套ViewPager 时候 Pager左右滑动不流畅
    字符串的截取
    倒计时
  • 原文地址:https://www.cnblogs.com/huaweicloud/p/12190988.html
Copyright © 2020-2023  润新知