zoukankan      html  css  js  c++  java
  • 使用pyftpdlib搭建ftp服务器

    ftp主动模式:控制平面建立后,数据平面是由服务器20端口反向连接客户端

    ftp被动模式:控制平面建立后,数据平面由客户端连接服务器端指定的其他端口(需要防火墙开启服务器端额外的指定端口)

    代码(来自官网):

    1,服务器端  -  主动模式

    from pyftpdlib.authorizers import DummyAuthorizer
    from pyftpdlib.handlers import FTPHandler
    from pyftpdlib.servers import FTPServer
    
    authorizer = DummyAuthorizer()
    authorizer.add_user("user", "12345", "/home/bridge", perm="elradfmwMT")
    authorizer.add_anonymous("/home/nobody")
    
    handler = FTPHandler
    handler.authorizer = authorizer
    
    # handler.passive_ports = range(10000, 10005)  # 被动模式
    server = FTPServer(('', 8888), handler)   # 控制端口用8888,非默认21
    server.serve_forever()
    

    也可以一条命令解决:

    python3 -m pyftpdlib -w -d [PATH] -u [USER] -P [PASSWORD]
    

     centos需要开启相应端口(开放8888端口):

    /sbin/iptables -I INPUT -p tcp --dport 8888 -j ACCEPT
    

    2,客户端 - 主动模式

    2.1,CMD

    CMD登录:ftp user:12345@x.x.x.x 8888

    登录完成后可以自由切换目录,但是执行put/get或者ls命令时,提示227 Entering passive mode

    切换主动模式: ftp:> passive

    但是切换后操作相关命令直接卡住

    2.2,xftp

    xftp连接时,选项中,把“使用被动模式”打勾去掉,可以顺利连接,显示/切换目录,上传/下载文件

    但是上传文件时,只能传一个,第二个文件会一直在进行中

    3,服务器 - 被动模式

    代码中添加一句:

    handler.passive_ports = range(10000, 10005)  # 被动模式
    

    即数据传输由客户端连接服务器端10000-10005的端口

    防火墙开启相应端口

    4,客户端 - 被动模式

    4.1,CMD

    一切正常

    4.2,xftp

    xftp连接时,选项中,把“使用被动模式”打上勾(默认有勾)

    但是上传文件时,只能传第一个和第三个,其他文件都是正在进行中

  • 相关阅读:
    10个对Web开发者最有用的Python包
    9款最好的JavaScript压缩工具
    推荐15款制作 SVG 动画的 JavaScript 库
    2016年最好的15个Web设计和开发工具
    整理六百篇web前端知识混总
    9款免费的跨浏览器测试工具
    9个有用的和免费的工具来支持动态网页开发
    8个基本的引导工具的网页设计师
    11款CSS3动画工具的开发
    2016年某前端群题目答案参考
  • 原文地址:https://www.cnblogs.com/guxh/p/14458345.html
Copyright © 2011-2022 走看看