简单的FTP共享文件pyftpdlib

共享文件夹或者文件除了上一篇文章中所说的Http方式,还有FTP方式,即搭建一个FTP服务器,共享文件夹,让别人访问。


安装pyftpdlib:

Python并没有内置一个FTP服务器,所以需要第三方模块的支持。可以使用pyftpdlib,其官网上有详细的介绍。

在命令行输入下面的语句进行安装:

pip install pyftpdlib


一句话共享:

在选定目录的命令行下输入下面的命令即可将该目录共享出去。

python -m pyftpdlib -p 21

其默认的端口是21,可以修改成其他的端口。

启动后,可以在浏览器中输入“ftp://localhost:21”即可查看当前文件夹下的文件。


局域网共享:

当然,上面的方式只能在本地访问文件夹(不知道我这样理解对不对),于是,需要写一个稍微复杂一点的脚本。
下面的脚本可以让局域网中的其它机器访问你共享的文件夹。

# -*- coding:utf-8 -*-
import os
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer


def main():
    # Instantiate a dummy authorizer for managing 'virtual' users
    authorizer = DummyAuthorizer()

    # Define a new user having full r/w permissions and a read-only
    # anonymous user
    authorizer.add_user('user', '12345', '.', perm='elradfmwM')
    # authorizer.add_anonymous(os.getcwd())

    # Instantiate FTP handler class
    handler = FTPHandler
    handler.authorizer = authorizer

    # Define a customized banner (string returned when client connects)
    handler.banner = "pyftpdlib based ftpd ready."

    # Specify a masquerade address and the range of ports to use for
    # passive connections.  Decomment in case you're behind a NAT.
    #handler.masquerade_address = '151.25.42.11'
    #handler.passive_ports = range(60000, 65535)

    # Instantiate FTP server class and listen on 0.0.0.0:2121
    address = ('192.168.61.66', 2121)
    server = FTPServer(address, handler)

    # set a limit for connections
    server.max_cons = 256
    server.max_cons_per_ip = 5

    # start ftp server
    server.serve_forever()

if __name__ == '__main__':
    main()

运行上面的代码,即可完成共享。此时,在自己的浏览器或者同局域网的别人的电脑的浏览器中输入"ftp://192.168.61.66:2121/"即可进行访问。

当然,这里添加了用户user,密码是12345,你可以自己修改,如果不需要登录,可以选择匿名登录(将添加用户的代码给注释掉,同时将其下面一行匿名的代码给取消掉注释即可)。


运行截图如下:

简单的FTP共享文件pyftpdlib_第1张图片

后记:

这一篇和上一篇介绍的Http共享我都尝试了,均可以做到通局域网内访问,非常方便简单,以后需要共享文件时就不用建群共享那么麻烦了。

你可能感兴趣的:(python,FTP服务器,共享,pyftpdlib)