使用python库pyftpdlib搭建FTP服务器示例,有惊喜!

创作不易 只因热爱!!
**

热衷分享,一起成长!

使用python库pyftpdlib搭建FTP服务器用法

从示例中快速使用 python库pyftpdlib,相关用法尽在注解中


1. 命令行下安装pyftpdlib库

pip install pyftpdlib

2. 命令行下一行代码快速搭建FTP服务器

python -m pyftpdlib

ftp://192.168.1.100:2121 (假设服务器IP: 192.168.1.100)

或者

python -m pyftpdlib -w -i 0.0.0.0 -p 2121 -d D:/Desktop -u admin -P 123456 

ftp://admin:123456@192.168.1.100:2121

说明:

python -m pyftpdlib -w -i [IP地址] -d [ftp路径] -u [ftp登录名] -P [ftp密码] -p [端口]
终端访问 ftp://[ftp登录名]:[ftp密码]@[IP地址]:[端口]

命令行可选参数:
  • -i : 指定IP地址(默认为本机的IP地址)
  • -p : 指定端口(默认为2121)
  • -w :写权限(默认为只读)
  • -d : 指定目录 (默认为当前目录)
  • -u :指定用户名登录
  • -P:设置登录密码

3. 简单配置,搭建FTP服务器

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

# 1.实例化DummyAuthorizer来创建ftp用户
authorizer = DummyAuthorizer()
# 2.添加用户权限和路径,参数是(用户名、密码、用户目录、权限),可以为不同的用户添加不同的目录和权限
'''
perm=权限说明(括号内为Linux命令)
1)读取权限:
"e"->进入文件目录(CWD, CDUP)
"l"->列出所有文件(LIST, NLST, STAT, MLSD, MLST, SIZE)
"r"->从服务器下载文件(RETR)
2)写入权限:
"a"->将数据追加到现有文件(APPE)
"d"->删除文件或目录(DELE, RMD)
"f"->重命名文件或目录(RNFR, RNTO)
"m"->创建目录(MKD)
"w"->上传文件到服务器(STOR, STOU)
"M"->更改服务器文件模式/权限(SITE CHMOD)
"T"->更改文件修改时间(SITE MFMT)
'''
# 2.1 添加登录用户, 密码, 路径, 权限
authorizer.add_user('admin', '123456', r'C:/path_to_shared1', perm='elradfmwMT')
# 2.2 添加匿名用户, 只需要路径权限
authorizer.add_anonymous(r"D:/path_to_shared2", perm="elradfmw")

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

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

# 5.上传下载的速度设置
dtp_handler = ThrottledDTPHandler
dtp_handler.read_limit = 512 * 1024 * 1024         
dtp_handler.write_limit = 256 * 1024 * 1024       
handler.dtp_handler = dtp_handler

# 6.监听ip和端口
server = FTPServer(('0.0.0.0', 2121), handler)

# 7.设置最大连接数
server.max_cons = 150
server.max_cons_per_ip = 15

# 8.开始服务, 命令行打印日志信息
server.serve_forever()

在这里插入图片描述

import pyftpdlib
# windows支持的gbk, 为了使用时文件夹显示不乱码, 需作小修改, 部分"utf-8"替换成"gbk"
print(pyftpdlib.__file__)
# C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyftpdlib\__init__.py
'''
1.从以上文件位置,修改文件 filesystems.py
C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyftpdlib\filesystems.py, 查找"yield line.encode('utf8', self.cmd_channel.unicode_errors)", 替换为 "yield line.encode('gbk', self.cmd_channel.unicode_errors)"

2.从以上文件位置,修改文件 handlers.py
C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyftpdlib\handlers.py, 查找"return bytes.decode('utf8', self.unicode_errors)", 替换为 "return bytes.decode('gbk', self.unicode_errors)"
'''

end


**

^**你好呀,我是一个医信行业工程师,喜欢学习,喜欢搞机,喜欢各种捣,也会持续分享,如果喜欢我,那就关注我吧!**^


作者|医信工程师随笔|Carltiger_github

图片|网络|侵删!!

关注我,我们共同成长

“你的鼓励就是我分享的动力”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值