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服务器上下载文件

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) 

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

(0)

相关推荐

  • 详解Python下ftp上传文件linux服务器

    模块介绍: from ftplib import FTP ftp = FTP() #设置变量 ftp.set_debuglevel(2) #打开调试级别2 显示详细信息 ftp.connect("IP", "port") #连接ftp, IP和端口 ftp.log("user", "password") #连接的用户名.密码 ftp.cwd(pathname) #设置FTP当前操作的路径 ftp.dir() #显示目录下的文件

  • Python 获取ftp服务器文件时间的方法

    这个问题在网上找了很长时间,也没有很好的解决方案,大多数都是用的 ftp.retrlines('LIST',处理函数) 来获得文件的时间但是格式是 所以很难做成时间戳,获取时间的目的不就是用来比较, 所以下面个大家来个可以获取时间然后转化成时间戳的方式 首先函数 直接获取ftp文件的时间 然后我的做法是,先将时间转化成列表,然后做成时间元组,再用函数转化成时间戳. L = list(ftp.sendcmd('MDTM ' + "/home/tarena/%s/%s" % (files_

  • python实现从ftp服务器下载文件的方法

    本文实例讲述了python实现从ftp服务器下载文件的方法.分享给大家供大家参考.具体实现方法如下: import ftplib ftp = ftblib.FTP("ftp.yourServer.com") ftp.login("username","password") filename = "index.html" ftp.storlines("STOR "+filename,open(filename

  • python通过ftplib登录到ftp服务器的方法

    本文实例讲述了python通过ftplib登录到ftp服务器的方法.分享给大家供大家参考.具体实现方法如下: import ftplib connect = ftplib.FTP("www.mysite.com") connect.login("domain\user", "password") data = [] connect.dir(data.append) connect.quit() for line in data: print(li

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

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

  • python连接远程ftp服务器并列出目录下文件的方法

    本文实例讲述了python连接远程ftp服务器并列出目录下文件的方法.分享给大家供大家参考.具体如下: 这段python代码用到了pysftp模块,使用sftp协议,对数据进行加密传输 import pysftp srv = pysftp.Connection(host="your_FTP_server", username="your_username",password="your_password") # Get the directory

  • 使用python实现http及ftp服务进行数据传输的方法

    服务器之间的http数据传输 直接使用python内置的http服务: python -m SimpleHTTPServer 8000 此时,输入指令的目录就已经开启了http服务,8000为端口(如不指定,默认为8000),如果我们需要在其他机器下垃取该目录下的文件,只需在目标机器运行: wget ip:port/文件名 速度杠杆的. 开启ftp上传文件 安装ftp的python第三方组件 pip install pyftpdlib 编写启动脚本 from pyftpdlib.authoriz

  • 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.ser

  • 利用apache ftpserver搭建ftp服务器的方法步骤

    目录 操作环境: 一.usermanager采用文件形式管理xml示例如下 二.usermanager采用mysql数据库管理用户时,ftpd-mysql.xml示例如下 三.usermanager采用Sqlite数据库管理用户时,ftpd-sqlite.xml示例如下 四.解决ftpd.exe在64位windows系统启动失败的问题 五.python操作sqlite的ftp.db管理(增加删除)用户 操作环境: win2012r2 x64 datacenter Apache FtpServer

  • CentOS6.9中搭建FTP服务器的方法

    1 基本环境 2 ftp工作模式 2.1 ftp通道 ftp工作会启动两个通道: 控制通道,数据通道 在ftp协议中,控制连接均是由客户端发起的,而数据连接有两种模式:port模式(主动模式)和pasv(被动模式) 2.2 port模式 在客户端需要接收数据时,ftp_client(大于1024的随机端口)----port命令-----ftp_server(21)发送port命令,这个port命令包含了客户端是用什么端口来接收数据(大于1024的随机端口),在传送数据时,ftp_server将通

  • Win7搭建FTP服务器 的方法步骤(图文)

    目录 创建新用户 配置internet 信息服务 添加FTP站点 创建新用户 右键计算机 -> 管理,选择用户本地用户组,新建用户,用户名和密码均为test 配置internet 信息服务 win7系统本身没有安装internet信息服务,需要先进行安装,打开控制面板 ->程序和功能-> 打开或关闭Windows功能 -> 选中internet信息服务然后点击确定进行安装 安装完成之后,点击开始搜索 Internet 信息服务(IIS)管理 添加FTP站点 在Win7系统中,没有自

  • Linux中搭建FTP服务器的方法

    Linux是以后操作系统的趋势所在,目前的大部分国产操作系统,甚至于安卓系统都是与Linux离不开关系.其中,FTP作为其中共享手段存在已久,我们今天就来看看怎么搭建简单的FTP服务器吧. FTP 是文件传输协议(File Transfer Protocol)的缩写.顾名思义,FTP用于计算机之间通过网络进行文件传输.你可以通过FTP在计算机账户间进行文件传输,也可以在账户和桌面计算机之间传输文件,或者访问在线软件归档.但是,需要注意的是多数的FTP站点的使用率非常高,可能需要多次重连才能连接上

  • docker pure-ftp 搭建ftp服务器的方法

    1.采用docker-compose搭建ftp服务器 docker-compose.yml的内容如下 ftp: image: stilliard/pure-ftpd volumes: - "../wp/app:/home/ftpusers/code" - "./pure-ftpd:/etc/pure-ftpd" ports: - "21:21" - "30000:30000" - "30001:30001"

  • 图文详解Ubuntu搭建Ftp服务器的方法(包成功)

    一.今天下午由于课程的要求不得已做了Ubuntu搭建Ftp服务器的实验,但是实验指导书还是N年前的技术,网上搜了一大把,都是模模糊糊的! 在百般困难中终于试验成功,特把经验分给大家 希望大家少走弯路! 二.详细步骤如下: (1)首先打开终端进入root模式下(在终端中输入:sudo su 回车 提示输入密码  输入密码即可): (2)安装vsftpd软件(首先要联网,或者通过新立德软件安装!卸载软件命令:sudo apt-get remove vsftpd) <span style="fo

  • Android 快速搭建FTP服务器的方法

    一.概述 打开你的手机,找到文件管理->分类->远程管理,点击启动服务,这样大家可以在局域网内使用电脑访问你手机上的文件了,当然你也可以设置账号和密码,防止"小人"共享你手机上的资源-.-,那如果自己动手,该如何实现这个小功能呢? 二.实现 1.导入相关的jar包,并在build.gradle添加相应的依赖,如图. 2.创建服务配置文件 在values文件夹下新建的xml文件,方便在代码中的引用,这些在网上也都可以很方便的找到,主要需要注意的就是末尾的换行符不可少,忘记带上

  • python一秒搭建FTP服务器

    一.了解FTP服务器 FTP(文件传输协议),运行在tcp洗衣上,使用两个端口,即数据端口和命令端口,也称之为控制端口.默认情况下,20是数据端口,21是控制端口. FTP有两种传输模式:主动模式和被动模式 (1) 主动模式:客户端首先从任意的非特殊端口n(大于1023的端口,也是客户端的命令端口)连接FTP服务器的命令端口(默认是21),向服务器发出命令 PORT n+1,告诉服务器自己使用n+1端口作为数据端口进行数据传输,然后在n+1端口监听.服务器收到PORT n+1后向客户端返回一个"

  • 使用 Python 快速实现 HTTP 和 FTP 服务器的方法

    有时你需临时搭建一个简单的 Web Server,但你又不想去安装 Apache.Nginx 等这类功能较复杂的 HTTP 服务程序时.这时可以使用 Python 内建的 SimpleHTTPServer 模块快速搭建一个简单的 HTTP 服务器. SimpleHTTPServer 模块可以把你指定目录中的文件和文件夹以一个简单的 Web 页面的方式展示出来.假设我们需要以 Web 方式共享目录 /Users/Mike/Docker,只需要以下这个命令行就可以轻松实现: $ cd /Users/

随机推荐