1. 程式人生 > >使用Python創建簡單的HTTP和FTP服務

使用Python創建簡單的HTTP和FTP服務

div banner strong 使用 dex pri 連接 comm p s

Python版HTTP服務器

閑話少說,首先確保裝了Python,我裝的是2.x版本,對了,我的操作系統是WIN7,其實對於Python來說,什麽操作系統並不重要。Python內置了一個簡單的HTTP服務器,只需要在命令行下面敲一行命令,一個HTTP服務器就起來了:

python -m SimpleHTTPServer 80

後面的80端口是可選的,不填會采用缺省端口8000。註意,這會將當前所在的文件夾設置為默認的Web目錄,試著在瀏覽器敲入本機地址:

http://localhost:80

如果當前文件夾有index.html文件,會默認顯示該文件,否則,會以文件列表的形式顯示目錄下所有文件。這樣已經實現了最基本的文件分享的目的,你可以做成一個腳本,再建立一個快捷方式,就可以很方便的啟動文件分享了。如果有更多需求,完全可以根據自己需要定制,具體的請參見官方文檔SimpleHTTPServer,或者直接看源碼。我拷貝一段,方便參考:

import SimpleHTTPServer
import SocketServer

PORT = 8000

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

httpd = SocketServer.TCPServer(("", PORT), Handler)

print "serving at port", PORT
httpd.serve_forever()

Python版FTP服務器

看到這裏,默認你已經安裝了Python,不過你還需要安裝另外一個好用的工具。你知道,當需要找Chrome插件的時候,會去GoogleWebStore

;當需要找Firefox應用的時候,會去MozillaAdd-ons;當你需要找Python組件的時候,你需要pip:A tool for installing and managing Python packages,安裝方法就不介紹了。

Python沒有內置一個直接可以用的FTP服務器,所以需要第三方組件的支持,我找到的這個組件叫pyftpdlib,首先安裝:

pip install pyftpdlib

安裝完後,和HTTP服器類似,執行以下命令就可以啟動一個FTP服務器了:

python -m pyftpdlib -p 21

後面的21端口依然是可選的,不填會隨機一個,被占用的端口將跳過。在瀏覽器敲入本機地址:

ftp://localhost:21

這時候,是匿名訪問,也就是用戶名是anonymous,密碼為空,如果想要控制訪問權限,你需要自己定制服務器,具體的可以參看pyftpdlib Tutorial,我這裏拷貝過來一段作為介紹:

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

def main():
    # Instantiate a dummy authorizer for managing ‘virtual‘ users
    authorizer = DummyAuthorizer()

    # Define a new user having full r/w permissions and a read-only
    # anonymous user
    authorizer.add_user(user, 12345, ., perm=elradfmwM)
    authorizer.add_anonymous(os.getcwd())

    # Instantiate FTP handler class
    handler = FTPHandler
    handler.authorizer = authorizer

    # Define a customized banner (string returned when client connects)
    handler.banner = "pyftpdlib based ftpd ready."

    # Specify a masquerade address and the range of ports to use for
    # passive connections.  Decomment in case you‘re behind a NAT.
    #handler.masquerade_address = ‘151.25.42.11‘
    #handler.passive_ports = range(60000, 65535)

    # Instantiate FTP server class and listen on 0.0.0.0:2121
    address = (‘‘, 2121)
    server = FTPServer(address, handler)

    # set a limit for connections
    server.max_cons = 256
    server.max_cons_per_ip = 5

    # start ftp server
    server.serve_forever()

if __name__ == __main__:
    main()

只看代碼應該基本知道該怎麽用了,add_user顯然是添加用戶,2121是指定端口,當然也可以隨機,還有最大連接數max_cons,每個ip最大連接限制,更多的接口建議直接看docstrings

轉自:https://www.cnblogs.com/yili16438/p/d3209323913c6d53e6060fcd8d27e4c0.html

使用Python創建簡單的HTTP和FTP服務