當(dāng)你想快速共享一個目錄的時候掸掸,這是特別有用的坑填,只需要1行代碼即可實現(xiàn)。
FTP 服務(wù)器叹洲,在此之前我都是使用Linux的vsftpd軟件包來搭建FTP服務(wù)器的,現(xiàn)在發(fā)現(xiàn)了利用pyftpdlib可以更加簡單的方法即可實現(xiàn)FTP服務(wù)器的功能工禾。
環(huán)境要求
- Python 2.7
- Windows / Linux
環(huán)境搭建
pip install pyftpdlib
一行代碼實現(xiàn)FTP服務(wù)器
通過Python的
-m
選項作為一個簡單的獨立服務(wù)器來運行运提,當(dāng)你想快速共享一個目錄的時候蝗柔,這是特別有用的。
在需要共享的目錄下執(zhí)行如下命令即可把當(dāng)前目錄共享出去(匿名登錄)
python -m pyftpdlib
至此一個簡單的FTP服務(wù)器已經(jīng)搭建完成民泵,訪問 ftp://127.0.0.1:2121
即可
(默認(rèn)IP為 127.0.0.1
癣丧、端口為 2121
)
可選參數(shù)
-
-i
指定IP地址(默認(rèn)為本機(jī)的IP地址) -
-p
指定端口(默認(rèn)為2121
) -
-w
寫權(quán)限(默認(rèn)為只讀) -
-d
指定目錄 (默認(rèn)為當(dāng)前目錄) -
-u
指定用戶名登錄 -
-P
設(shè)置登錄密碼
簡單示例
上述的一行命令已經(jīng)可以實現(xiàn)一個簡單的FTP服務(wù)器,但是要搭建一個功能強大完善的FTP服務(wù)所涉及到的配置較多栈妆,這時需要使用Pyftpdlib提供的 API 來編寫胁编。如下是一個簡單的示例
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
# 實例化DummyAuthorizer來創(chuàng)建ftp用戶
authorizer = DummyAuthorizer()
# 參數(shù):用戶名,密碼鳞尔,目錄嬉橙,權(quán)限
authorizer.add_user('user', '12345', '/opt/pyftp/test', perm='elradfmwMT')
# 匿名登錄
# authorizer.add_anonymous('/home/nobody')
handler = FTPHandler
handler.authorizer = authorizer
# 參數(shù):IP,端口寥假,handler
server = FTPServer(('192.168.56.100', 21), handler)
server.serve_forever()
perm權(quán)限選項
讀取權(quán)限:
-
"e"
=更改目錄(CWD市框,CDUP命令) -
"l"
=列表文件(LIST,NLST糕韧,STAT枫振,MLSD,MLST萤彩,SIZE命令) -
"r"
=從服務(wù)器檢索文件(RETR命令)
寫入權(quán)限:
-
"a"
=將數(shù)據(jù)追加到現(xiàn)有文件(APPE命令) -
"d"
=刪除文件或目錄(DELE粪滤,RMD命令) -
"f"
=重命名文件或目錄(RNFR,RNTO命令) -
"m"
=創(chuàng)建目錄(MKD命令) -
"w"
=將文件存儲到服務(wù)器(STOR雀扶,STOU命令) -
"M"
=更改文件模式/權(quán)限(SITE CHMOD命令) -
"T"
=更改文件修改時間(SITE MFMT命令)
參考
Pyftpdlib文檔:http://pyftpdlib.readthedocs.io/en/latest/index.html