返回顶部
首页 > 资讯 > 服务器 >python一秒搭建FTP服务器
  • 373
分享到

python一秒搭建FTP服务器

pythonFTP服务器python搭建FTP服务器 2022-06-02 22:06:38 373人浏览 泡泡鱼
摘要

一、了解FTP服务器 FTP(文件传输协议),运行在tcp洗衣上,使用两个端口,即数据端口和命令端口,也称之为控制端口。默认情况下,20是数据端口,21是控制端口。 FTP有两种传输模式:主动模式和

一、了解FTP服务器

  • FTP(文件传输协议),运行在tcp洗衣上,使用两个端口,即数据端口和命令端口,也称之为控制端口。默认情况下,20是数据端口,21是控制端口。
  • FTP有两种传输模式:主动模式和被动模式

(1) 主动模式:客户端首先从任意的非特殊端口n(大于1023的端口,也是客户端的命令端口)连接FTP服务器的命令端口(默认是21),向服务器发出命令 PORT n+1,告诉服务器自己使用n+1端口作为数据端口进行数据传输,然后在n+1端口监听。服务器收到PORT n+1后向客户端返回一个“ACK”,然后服务器从它自己的数据端口(20)到 客户端先前指定的数据端口(n+1端口)的连接,最后客户端向服务器返回一个“ACK”。

在这里插入图片描述

(2)被动模式:为了解决服务器发起到客户端的连接问题,开发了被动FTP,或者叫做PASV,当客户端通知服务器处于被动模式时才启用。在被动模式下,命令连接和数据连接都是有客户端发起。当开启一个FTP连接时,客户端打开两个非特权的任意端口(大于1023)。第一个端口连接服务器的21端口,但是与主动方式不同,客户端不会提交PORT命令并允许服务器来回连接数据端口,而是提交PASV命令。这样做的结果就是服务器会开启任意一个非特权端口,并且发送PORT p命令给客户端,然后客户端发起从本地端口 n+1 到 服务器端口p 的连接来传输数据

在这里插入图片描述

总结:主动模式有利于对FTP服务器的管理,但是不利于对客户端的管理。因为FTP服务器企图和客户端的高位随机端口建立连接,而这个端口很有可能会被客户端的防火墙阻塞掉。被动模式相反。

二、利用python搭建FTP服务器

Python搭建FTP需要利用到pyftpdlib模块

1.安装 pyftpdlib 模块


C:\Users\LTP> pip3 install pyftpdlib

C:\Users\LTP> python3 -m pyftpdlib -p 21

找到pyftpdlib模块源文件所在目录


C:\Users\LTP> python3
……
>>> import pyftpdlib
>>> pyftpdlib.__path__
['/usr/local/python3/lib/python3.7/site-packages/pyftpdlib']

到 pyftpdlib目录下

发现 filesystems.py 和 handlers.py 两个文件,先执行备份


C:\Users\LTP> dir E:\PyCharmProjects\untitled\project01\venv\Lib\site-packages\pyftpdlib
2021/05/15  17:50    <DIR>          .
2021/05/15  17:50    <DIR>          ..
2017/12/30  16:44            35,246 authorizers.py
2021/05/15  17:49            24,798 filesystems - 副本.py
2021/05/15  17:49            24,798 filesystems.py
2019/10/24  16:26           144,635 handlers - 副本.py
2019/10/24  16:26           144,635 handlers.py
2017/12/30  16:44            36,769 ioloop.py
2019/10/24  16:26             5,823 log.py
2019/10/24  16:26             3,844 prefork.py
2019/10/24  16:26            21,658 servers.py
2021/05/15  17:45    <DIR>          test
2019/10/24  16:26               774 _compat.py
2019/10/24  16:28             2,845 __init__.py
2018/04/26  18:41             4,879 __main__.py
2021/05/15  17:46    <DIR>          __pycache__
              12 个文件        450,704 字节
               4 个目录 44,605,644,800 可用字节
# 备份 filesystems.py 和 handlers.py

# 修改filesystems.py文件
# 将原本的"utf-8"修改成"gbk"(windows支持的gbk类型的bytes)
503          yield line.encode('gbk', self.cmd_channel.unicode_errors

# 修改 handlers.py 文件
# 将原本的"utf-8"修改成"gbk"(windows支持的gbk类型的bytes)
1413         return bytes.decode('gbk', self.unicode_errors)

编写并运行FTP代码


# 该脚本程序是运行在windows上的ftp,运行前需要安装pyftpdlib模块, pip3 install pyftpdlib
# 修改filesystems.py文件,将503 行的 "utf-8"修改成"gbk"(windows支持的gbk类型的bytes)即 yield line.encode('gbk', self.cmd_channel.unicode_errors
# 修改 handlers.py 文件,将1413行的"utf-8"修改成"gbk"(windows支持的gbk类型的bytes)即 return bytes.decode('gbk', self.unicode_errors)

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler,ThrottledDTPHandler
from pyftpdlib.servers import FTPServer
from pyftpdlib.log import LogFORMatter
import logging

# 1.记录日志输出到文件和终端
logger = logging.getLogger('FTP-LOG')
logger.setLevel(logging.DEBUG)

cs = logging.StreamHandler()
cs.setLevel(logging.INFO)

fs = logging.FileHandler(filename='test.log', mode='a', encoding='utf-8')
fs.setLevel(logging.DEBUG)

formatter = logging.Formatter('[%(asctime)s] %(name)s - %(levelname)s : %(message)s')

cs.setFormatter(formatter)
fs.setFormatter(formatter)

logger.addHandler(cs)
logger.addHandler(fs)


# 2.实例化虚拟用户,这是FTP的首要条件
authorizer = DummyAuthorizer()

# 3.添加用户权限和路径,括号内的参数是(用户名、密码、用户目录、权限),可以为不同的用户添加不同的目录和权限
authorizer.add_user('user', '123456', "d:/", perm="elradfmw")

# 4.添加匿名用户,只需要路径
authorizer.add_anonymous("d:/")

# 5.初始化ftp句柄
handler = FTPHandler
handler.authorizer = authorizer

# 6.添加被动端口范围
handler.passive_ports = range(2000,20033)

# 7.上传下载的速度设置
dtp_handler = ThrottledDTPHandler
dtp_handler.read_limit = 300 * 1024          # 300 kb/s
dtp_handler.write_limit = 300 * 1024         # 300 kb/s
handler.dtp_handler = dtp_handler

# 8.监听ip和端口 , linux里需要root用户才能使用21端口
server = FTPServer(('0.0.0.0', 21), handler)

# 9.最大连接数
server.max_cons = 150
server.max_cons_per_ip = 15

# 10.开始服务,自带打印日志信息
server.serve_forever()

authorizer.add_user(‘user', ‘123456', “d:/”, perm=“elradfmw”)中perm权限参数的含义:
1、读权限:

e :改变文件目录
l :列出文件
r :从服务器接收文件
2、写权限

a :文件上传
d :删除文件
f :文件重命名
m :创建文件
w :写权限
M:文件传输模式(通过FTP设置文件权限)
5.使用CMD登入FTP验证
使用正常,认证正常

在这里插入图片描述

三、编写FTP客户端程序

可以用于文件的上传下载


[root@localhost python]# vim ftp.py 
#!/bin/env python3
# -*- coding: utf-8 -*-
# Time: 2021-5-15 21:08
# Description: FTP CLIENT
# File Name: ftp.py

# FTP客户端
from ftplib import FTP

# 1.登入ftp
ftp = FTP(host='192.168.0.108', user='user', passwd='123456')

# 设置编码方式,由于在windows系统,设置编码方式为gbk'
ftp.encoding = 'gbk'

# 切换目录
ftp.cwd('test')

# 列出文件夹内容
ftp.retrlines('LIST')     # 或者ftp.dir()

# 下载文件 node.txt
ftp.retrbinary('RETR node.txt', open('node.txt', 'wb').write)

# 上传文件ftpserver.py
ftp.storbinary('STOR ftpserver.py', open('ftpserver.py', 'rb'))

# 查看目录下文件详情
for file in ftp.mlsd(path='/test'):
    print(file)

执行结果:

[root@localhost python]# ./ftp.py
# 列出了test文件夹中的内容
-rw-rw-rw- 1 owner group 1661 May 15 14:19 ftpserver.py
-rw-rw-rw- 1 owner group 12 May 15 14:14 node.txt
# 查看到了目录下文件的详情
('ftpserver.py', {'modify': '20210515142003', 'perm': 'radfw', 'size': '1661', 'type': 'file'})
('node.txt', {'modify': '20210515141442', 'perm': 'radfw', 'size': '12', 'type': 'file'})
[root@localhost python]# ls # node.txt文件被下载到客户端
ftp.py ftpserver.py node.txt

到windows的test目录下验证

ftpserver.py文件被上传到服务端

在这里插入图片描述

以上就是python一秒搭建FTP服务器的详细内容,更多关于python FTP服务器的资料请关注编程网其它相关文章!

--结束END--

本文标题: python一秒搭建FTP服务器

本文链接: https://lsjlt.com/news/10638.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python一秒搭建FTP服务器
    一、了解FTP服务器 FTP(文件传输协议),运行在tcp洗衣上,使用两个端口,即数据端口和命令端口,也称之为控制端口。默认情况下,20是数据端口,21是控制端口。 FTP有两种传输模式:主动模式和...
    99+
    2022-06-02
    python FTP服务器 python搭建FTP服务器
  • Python搭建FTP服务器
    Python版本 3.6.2 使用的ftp包:pyftpdlib    pip install pyftpdlib就可以下载安装了 FTP协议下载上传文件在文件过大的情况下会比HTTP更具有优势,更为方便的实现断点上传和进度监控,下面是官...
    99+
    2023-01-31
    服务器 Python FTP
  • python如何搭建FTP服务器
    这篇文章主要介绍了python如何搭建FTP服务器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、了解FTP服务器FTP(文件传输协议),运行在tcp洗衣上,使用两个端口,...
    99+
    2023-06-15
  • Python搭建HTTP服务器和FTP服务器
    本教程为大家分享了Python搭建HTTP服务器和FTP服务器的具体步骤,供大家参考,具体内容如下 默认安装版本为pytho2.7 http服务器搭建教程: 进入要开放访问的目录下,执行命令:python ...
    99+
    2022-06-04
    服务器 Python HTTP
  • centos搭建FTP服务器
    在LINUX虚拟机上,使用vsftpd搭建一个FTP服务器,并创建一个用户名为“ftpuser”的用户,使用windows主机通过ftp向文件夹中复制一个名为自己姓名首字母的txt文件,拍照上传文...
    99+
    2023-09-02
    服务器 linux 运维
  • Android中怎么搭建一个FTP服务器
    Android中怎么搭建一个FTP服务器,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。导入相关的jar包,并在build.gradle添加相应的依赖,如图。创建服务配置文件...
    99+
    2023-05-30
    android ftp
  • 云服务器搭建ftp服务器
    搭建云服务器的硬件需求 首先需要考虑的是云服务器所需的硬件设备。通常情况下,云服务器需要具备以下硬件设备: 1) 服务器主板:负责服务器的硬件设备,如CPU、内存、硬盘等; 2) 网络设备:用于连接云服务器与其他网络服务提供商,如Wi...
    99+
    2023-10-27
    服务器 ftp
  • Linux下搭建FTP服务器
    Linux下搭建FTP服务器 FTP协议:文件传输协议(File Transfer Protocol) 协议定义了一个在远程计算机系统和本地计算机系统之间传输文件的一个标准FTP运行在OSI模型的应用...
    99+
    2023-09-06
    linux 服务器 网络
  • FTP服务器的搭建(Linux)
    摘要: FTP(File Transfer Protocol)即文件传输协议,是一种基于TCP的协议,采用客户/服务器模式。通过FTP协议,用户可以在FTP服务器中进行文件的上传或下载等操作。虽然现在通过HTTP协议下载的站点有很多,...
    99+
    2024-01-21
    服务器 linux 网络
  • 云服务器怎么搭建ftp
    云服务器搭建ftp的方法:下载 Xlight ftp服务器软件安装在电脑主机上,运行后,就可以在界面中可以创建、修改、管理虚拟服务器。登录云服务器后,右键我的电脑打开“计算机管理”,添加一个新的用户,在用户列表中点击添加按钮,设置用户名、密...
    99+
    2024-04-02
  • Linux FTP服务器如何搭建
    这篇文章主要介绍Linux FTP服务器如何搭建,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先我们看一下主要配置文件如下:/etc/VSFTPd/VSFTPd.conf 主配置文件/etc/VSFTPd.FTPu...
    99+
    2023-06-17
  • CentOS7 安装搭建FTP服务器
    CentOS7 安装搭建FTP服务器 1、FTP简介2、关闭防火墙3、安装FTP软件包4、新建用户和FTP目录5、配置ftp服务器6、重启并配置防火墙7、重启FTP服务8、访问测试 1...
    99+
    2023-09-16
    服务器 运维 linux
  • windows怎么搭建ftp服务器
    要在Windows上搭建FTP服务器,您可以按照以下步骤进行操作:1. 打开控制面板并选择"程序"。2. 在"程序和功能"下,点击"...
    99+
    2023-10-10
    Windows
  • win7如何搭建ftp服务器
    本文小编为大家详细介绍“win7如何搭建ftp服务器”,内容详细,步骤清晰,细节处理妥当,希望这篇“win7如何搭建ftp服务器”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。win7ftp服务器搭建方法:首先点击...
    99+
    2023-07-01
  • centos7怎么搭建ftp服务器
    要在CentOS 7上搭建FTP服务器,可以按照以下步骤进行操作: 安装vsftpd软件包:打开终端并输入以下命令安装vsftp...
    99+
    2023-10-23
    centos7 服务器
  • 腾讯云服务器搭建ftp
    腾讯云服务器搭建FTP,可以选择使用虚拟主机或者云服务器,具体需要根据您的实际要求和预算来决定。 选择适合自己的虚拟主机。虚拟主机有多种类型,包括vps、自建主机、云主机等,价格和性能都不一样,建议根据自己的需求来选择合适的配置。 选择...
    99+
    2023-10-26
    腾讯 服务器 ftp
  • filezilla怎么搭建ftp服务器
    要搭建FTP服务器,您可以使用FileZilla Server软件。以下是搭建FTP服务器的步骤: 下载并安装FileZilla...
    99+
    2024-04-09
    filezilla 服务器
  • 云服务ftp服务器怎么搭建
    搭建云服务FTP服务器可以按照以下步骤进行操作:1. 选择合适的云服务提供商:根据自己的需求选择合适的云服务提供商。2. 创建虚拟机...
    99+
    2023-09-25
    云服务器 ftp服务器
  • 在IIS服务器下搭建FTP服务
    为了实现文件局域网或远程共享与访问,在IIS服务器手动搭建一个FTP Server共享服务。 基于Windows 11 操作系统。 一、安装FTP服务 打开“控制面板”->双击“程序和功能”项,如下图:  在“程序和功能”窗口,点击左边栏“...
    99+
    2023-09-02
    服务器 windows FTP IIS
  • 云服务器如何搭建ftp服务器
    要搭建云服务器上的FTP服务器,可以按照以下步骤进行操作:1. 选择一个合适的云服务器提供商,并购买一个云服务器实例。确保选择的实例...
    99+
    2023-09-28
    云服务器 ftp服务器 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作