1. 程式人生 > >1行Python程式碼實現FTP伺服器

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

當你想快速共享一個目錄的時候,這是特別有用的,只需要1行程式碼即可實現。

FTP 伺服器,在此之前我都是使用Linux的vsftpd軟體包來搭建FTP伺服器的,現在發現了利用pyftpdlib可以更加簡單的方法即可實現FTP伺服器的功能。

環境要求

  • Python 2.7

  • Windows / Linux

環境搭建

  1. pip install pyftpdlib

一行程式碼實現FTP伺服器

通過Python的-m選項作為一個簡單的獨立伺服器來執行,當你想快速共享一個目錄的時候,這是特別有用的。

在需要共享的目錄下執行如下命令即可把當前目錄共享出去(匿名登入)

  1. python -m pyftpdlib

至此一個簡單的FTP伺服器已經搭建完成,訪問 

ftp://127.0.0.1:2121即可(預設IP為 127.0.0.1 、埠為 2121 )

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

效果圖

可選引數

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

  • p 指定埠(預設為2121)

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

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

  • u 指定使用者名稱登入

  • P 設定登入密碼

簡單示例

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

  1. from pyftpdlib.authorizers importDummyAuthorizer

  2. from pyftpdlib.handlers import

    FTPHandler

  3. from pyftpdlib.servers importFTPServer

  4. # 例項化DummyAuthorizer來建立ftp使用者

  5. authorizer = DummyAuthorizer()

  6. # 引數:使用者名稱,密碼,目錄,許可權

  7. authorizer.add_user('user', '12345', '/opt/pyftp/test', perm='elradfmwMT')

  8. # 匿名登入

  9. # authorizer.add_anonymous('/home/nobody')

  10. handler = FTPHandler

  11. handler.authorizer = authorizer

  12. # 引數:IP,埠,handler

  13. server = FTPServer(('192.168.56.100', 21), handler)

  14. 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文件:

  1. http://pyftpdlib.readthedocs.io/en/latest/index.html

本文作者

?wx_fmt=png

Kangvcar

Python中文社群專欄作者,簡書活躍作者。知識的廣度是深度的副產品。

?wx_fmt=jpeg