当前位置:首页 > 编程教程 > Python技术文章 > Python搭建FTP服务器的方法示例

如何使用Python搭建FTP服务器

  • 发布时间:
  • 作者:码农之家
  • 点击:148

这篇文章主要知识点是关于Python、FTP服务器、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Python可以这样学
Python可以这样学带讲义代码版
  • 类型:Python编程大小:22 MB格式:PDF作者:董付国
立即下载

Python搭建FTP服务器的方法示例

Python版本 3.6.2

使用的ftp包:pyftpdlib    pip install pyftpdlib就可以下载安装了

FTP协议下载上传文件在文件过大的情况下会比HTTP更具有优势,更为方便的实现断点上传和进度监控,下面是官方文档中的

基本方法

import os 
from pyftpdlib.authorizers import DummyAuthorizer 
from pyftpdlib.handlers import FTPHandler 
from pyftpdlib.servers import FTPServer 
 
def main(): 
  # 实例化用户授权管理 
  authorizer = DummyAuthorizer() 
  authorizer.add_user('user', '12345', 'path', perm='elradfmwMT')#添加用户 参数:username,password,允许的路径,权限 
  authorizer.add_anonymous(os.getcwd())#这里是允许匿名用户,如果不允许删掉此行即可 
 
  # 实例化FTPHandler 
  handler = FTPHandler 
  handler.authorizer = authorizer 
 
  # 设定一个客户端链接时的标语 
  handler.banner = "pyftpdlib based ftpd ready." 
 
  #handler.masquerade_address = '151.25.42.11'#指定伪装ip地址 
  #handler.passive_ports = range(60000, 65535)#指定允许的端口范围 
 
  address = (ipaddr, 21)#FTP一般使用21,20端口 
  server = FTPServer(address, handler)#FTP服务器实例 
 
  # set a limit for connections 
  server.max_cons = 256 
  server.max_cons_per_ip = 5 
 
  # 开启服务器 
  server.serve_forever() 
 
if __name__ == '__main__': 
  main() 

开启ftp服务器后要确定防火墙开启了21,20端口,并且在客户端的浏览器中设置internet选项高级选项卡中的被动ftp的勾去掉之后才能登陆到ftp服务器

从Windows登录到服务器:

Python搭建FTP服务器的方法示例

利用Python从ftp服务器上下载文件

from ftplib import FTP 
ftp=FTP() 
ftp.connect('localhost',21)#localhost改成服务器ip地址 
ftp.login(user='user',passwd='12345') 
 
file=open('f://ftpdownload/test.txt','wb') 
ftp.retrbinary("RETR test.txt",file.write,1024)#从服务器上下载文件 1024字节一个块 
ftp.set_debuglevel(0) 
ftp.close() 

FTP服务器事件回调函数:

class MyHandler(FTPHandler):  
  def on_connect(self):#链接时调用 
    print "%s:%s connected" % (self.remote_ip, self.remote_port) 
 
  def on_disconnect(self):#关闭连接是调用 
    # do something when client disconnects 
    pass 
 
  def on_login(self, username):#登录时调用 
    # do something when user login 
    pass 
 
  def on_logout(self, username):#登出时调用 
    # do something when user logs out 
    pass 
 
  def on_file_sent(self, file):#文件下载后调用 
    # do something when a file has been sent 
    pass 
 
  def on_file_received(self, file):#文件上传后调用 
    # do something when a file has been received 
    pass 
 
  def on_incomplete_file_sent(self, file):#下载文件时调用 
    # do something when a file is partially sent 
    pass 
 
  def on_incomplete_file_received(self, file):#上传文件时调用 
    # remove partially uploaded files 
    import os 
    os.remove(file) 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

Python 相关电子书
学习笔记
网友NO.120157

python实现FTP服务器服务的方法

FTP服务的主动模式和被动模式 在开始之前,先聊一下FTP的主动模式和被动模式,两者的区别 , 用两张图来表示可能会更加清晰一些: 主动模式: 主动模式工作过程: 1. 客户端以随机非特权端口N,就是大于1024的端口,对server端21端口发起连接 2. 客户端开始监听 N+1端口; 3. 服务端会主动以20端口连接到客户端的N+1端口。 主动模式的优点: 服务端配置简单,利于服务器安全管理,服务器只需要开放21端口 主动模式的缺点: 如果客户端开启了防火墙,或客户端处于内网(NAT网关之后), 那么服务器对客户端端口发起的连接可能会失败 被动模式: 被动模式工作过程: 1. 客户端以随机非特权端口连接服务端的21端口 2. 服务端开启一个非特权端口为被动端口,并返回给客户端 3. 客户端以非特权端口+1的端口主动连接服务端的被动端口 被动模式缺点: 服……

网友NO.955970

Python实现的ftp服务器功能详解【附源码下载】

本文实例讲述了Python实现的ftp服务器功能。分享给大家供大家参考,具体如下: python 具备强大的网络编程功能,而且代码简介,用简单的代码,就能实现一个功能强大的FTP 服务器。我亲自测试了这个 python ftp server. 代码下载,在文章的末尾处,整个部署介绍如下: 1. 环境, python 2.7.3 ,centos 6.2 . 2. 定义服务器ip ,端口等信息,可以在下载的源码中查看 listen_ip = "192.168.4.128" # ftp server 的 ip 地址listen_port = 2111 # ftp 端口,默认21,这里我设置成2111.conn_list = []root_dir = "/home/summer/ftp" # 这是定义的ftp目录,可以改成你想要的.max_connections = 500conn_timeout = 120 3. 搭建一个测试ftp 目录 在 /home/summer/ftp 目录下,新建 目录 :anonymous ,这是为了支持匿名用户的 在 /home/summer/ftp 目录下,新建 目录 :yihaomen, 目录名也就是用户名,然后再yihaomen 目录下创建 ".xxftp" 目录,然后在此目录中……

网友NO.396072

Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例

本文实例讲述了Python实现基于多线程、多用户的FTP服务器与客户端功能。分享给大家供大家参考,具体如下: 项目介绍: 1. 用户加密认证 2. 允许同时多用户登录 3. 每个用户有自己的家目录 ,且只能访问自己的家目录 4. 对用户进行磁盘配额,每个用户的可用空间不同 5. 允许用户在ftp server上随意切换目录 6. 允许用户查看当前目录下文件 7. 允许上传和下载文件,保证文件一致性 8. 文件传输过程中显示进度条 实现的原理: 服务器端启用端口监听,并对每一连接启用一个线程,对用户登陆密码采用SHA512进行加密并进行匹配,当用户登陆成功后,实例化FTPS,并引导客户端进入主命令模式, 然后实现FTP的上传功能、下载功能、新建目录、删除文件或目录、切换目录等实例化操作,同时对相关上传下载进行进度条显示,服务器端显示下载或上传文件的大小……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

投诉 / 推广 / 赞助:QQ:520161757