• 使用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连接时,选项中,把“使用被动模式”打上勾(默认有勾)

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

  • 相关阅读:
    轮播图
    MySQL初认识
    css的动画
    jQuery 滚动监听总结
    DOM操作 练习
    Ajax总结
    日历 练习
    Jquery基础
    2018-07-14Java基础+基本数据类型+自动/强制数据类型转换+定义变量+运算符
    2018-07-13E-R图设计数据库+三大范式+修改用户密码+分配用户权限
  • 原文地址:https://www.cnblogs.com/guxh/p/14458345.html
Copyright © 2020-2023  润新知