1行Python程式碼實現FTP伺服器

青衫無名發表於2018-03-15

當你想快速共享一個目錄的時候,這是特別有用的,只需要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 )

?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1

效果圖

可選引數

  • i 指定IP地址(預設為本機的IP地址)

  • p 指定埠(預設為2121)

  • w 寫許可權(預設為只讀)

  • d 指定目錄 (預設為當前目錄)

  • u 指定使用者名稱登入

  • P 設定登入密碼

簡單示例

上述的一行命令已經可以實現一個簡單的FTP伺服器,但是要搭建一個功能強大完善的FTP服務所涉及到的配置較多,這時需要使用Pyftpdlib提供的 API 來編寫。如下是一個簡單的示例

from
 pyftpdlib.authorizers 
import
 
DummyAuthorizer

from
 pyftpdlib.handlers 
import
 
FTPHandler

from
 pyftpdlib.servers 
import
 
FTPServer


# 例項化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命令)

原文釋出時間為:2018-01-03 

本文作者:Kangvcar

本文來自雲棲社群合作伙伴“Python中文社群”,瞭解相關資訊可以關注“Python中文社群”微信公眾號


相關文章