1行Python程式碼實現FTP伺服器
當你想快速共享一個目錄的時候,這是特別有用的,只需要1行程式碼即可實現。
FTP 伺服器,在此之前我都是使用Linux的vsftpd軟體包來搭建FTP伺服器的,現在發現了利用pyftpdlib可以更加簡單的方法即可實現FTP伺服器的功能。
環境要求
Python 2.7
Windows / Linux
環境搭建
pip install pyftpdlib
一行程式碼實現FTP伺服器
通過Python的-m選項作為一個簡單的獨立伺服器來執行,當你想快速共享一個目錄的時候,這是特別有用的。
在需要共享的目錄下執行如下命令即可把當前目錄共享出去(匿名登入)
python -m pyftpdlib
至此一個簡單的FTP伺服器已經搭建完成,訪問
ftp://127.0.0.1:2121
即可(預設IP為 127.0.0.1 、埠為 2121 )效果圖
可選引數
i 指定IP地址(預設為本機的IP地址)
p 指定埠(預設為2121)
w 寫許可權(預設為只讀)
d 指定目錄 (預設為當前目錄)
u 指定使用者名稱登入
P 設定登入密碼
簡單示例
上述的一行命令已經可以實現一個簡單的FTP伺服器,但是要搭建一個功能強大完善的FTP服務所涉及到的配置較多,這時需要使用Pyftpdlib提供的 API 來編寫。如下是一個簡單的示例
from pyftpdlib.authorizers importDummyAuthorizer
from pyftpdlib.handlers import
from pyftpdlib.servers importFTPServer
# 例項化DummyAuthorizer來建立ftp使用者
authorizer = DummyAuthorizer()
# 引數:使用者名稱,密碼,目錄,許可權
authorizer.add_user('user', '12345', '/opt/pyftp/test', perm='elradfmwMT')
# 匿名登入
# authorizer.add_anonymous('/home/nobody')
handler = FTPHandler
handler.authorizer = authorizer
# 引數:IP,埠,handler
server = FTPServer(('192.168.56.100', 21), handler)
server.serve_forever()
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命令)
參考
Pyftpdlib文件:
http://pyftpdlib.readthedocs.io/en/latest/index.html
本文作者
Kangvcar
Python中文社群專欄作者,簡書活躍作者。知識的廣度是深度的副產品。