ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python——pyftpdlib 快速搭建ftp服务器

2022-01-12 12:00:50  阅读:147  来源: 互联网

标签:ftp authorizer 文件 python pyftpdlib 权限 row


python——pyftpdlib 快速搭建ftp服务器

前言

python工具库挺多的,最近想搭建一个ftp服务器,就是分享一下文件而已,功能简单,于是就搜索到了python的工具库——pyftpdlib

安装

pip install pyftpdlib

一行代码使用

python -m pyftpdlib

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

简单使用

#同时使用pandas读取xlsx文件,配置账号、密码、路径和权限
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
import pandas as pd

#读取用户配置文件,可以用其他格式的文件,请随意
df = pd.read_excel('user.xlsx')

# 实例化DummyAuthorizer来创建ftp用户
authorizer = DummyAuthorizer()
# 参数:用户名,密码,目录,权限
for index,row in df.iterrows():
	authorizer.add_user(row['账户'], row['密码'], row['路径'], perm=row['权限'])
	
#设置一个匿名登录
#authorizer.add_anonymous('/home/nobody')

#创建FTPHanddler实例
handler = FTPHandler
handler.authorizer = authorizer
# 参数:IP,端口,handler
server = FTPServer(('0.0.0.0', 8800), handler)
server.serve_forever()

直接运行即可使用,方便简单,但是Windows应该会遇到中文乱码的情况,最简单粗暴的方法是把filesystems.py和handlers.py文件里面的‘utf8’直接替换为‘gbk’。

perm权限选项

读取权限:

"e" ——更改目录(CWD,CDUP命令)
"l" ——列表文件(LIST,NLST,STAT,MLSD,MLST,SIZE命令)
"r" ——从服务器检索文件(RETR命令)

写入权限:

"a" ——将数据追加到现有文件(APPE命令)
"d" ——删除文件或目录(DELE,RMD命令)
"f" ——重命名文件或目录(RNFR,RNTO命令)
"m" ——创建目录(MKD命令)
"w" ——将文件存储到服务器(STOR,STOU命令)
"M"——更改文件模式/权限(SITE CHMOD命令)
"T"——更改文件修改时间(SITE MFMT命令)

格式就是在 authorizer.add_user(row[‘账户’], row[‘密码’], row[‘路径’], perm=row[‘权限’])里面,perm=‘elradfmwMT’

题外话

python还有一个自带的,可以快速搭建一个http服务器,其实也类似是ftp,可以实现文件共享,一行代码即可搞定,在CMD中输入“python -m http.server 8080”即可开启服务器,可在浏览器下载该目录下的文件,简单粗暴。

标签:ftp,authorizer,文件,python,pyftpdlib,权限,row
来源: https://blog.csdn.net/younger_LF/article/details/122449580

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有