用 python 寫個簡單的 WWW Server

 

很久沒寫程式了,最近玩一下 python ,的確有些很好玩的功能~~~

指令加參數,就可以建一個簡易的 WWW Server

以下是使用 RHEL7 64位元為例:

cd /tmp

python -m SimpleHTTPServer(區分大小寫)

image

預設會將現行目錄(這裡是 /tmp)當成 DocumentRoot 分享,port number預設是 TCP(8000)

防火牆記得要開放

image

客戶端(Client)看到的就是 Server 的 /tmp 目錄

image

如果準備 index.html ,是可以看到網頁內容

image

如果不喜歡預設的 TCP(8000),想要換一個 port 也可以

systemctl status httpd(先確認Apache WWW Server沒有佔用TCP(80))

python -m SimpleHTTPServer 80(port number當成參數)

image

防火牆記得要開TCP(80)

image

/tmp/index.html 不更新,看起來就有點錯亂了~~~

image

簡易分享網頁,開放下載都沒問題!

如果將指令將到 /etc/rc.d/rc.local,是否會變成開機後,自動啟動呢?

image

這是個無心的意外,卻是危險的要命,用 root 執行的 WWW Server,開放了整個硬碟的檔案~~~

image

改成這樣,看起來就好多了!

image

另外一個方法,先準備 /tmp/SimpleHTTPServer1.py(這是為了測試,實際上,這個檔案當然是不適合放在 DocumentRoot)

*.py 的 sample code,取自這裡:http://effbot.org/librarybook/simplehttpserver.htm

import SimpleHTTPServer
import SocketServer

# minimal web server.  serves files relative to the
# current directory.

PORT = 8000

Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

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

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

image

要改寫成 *.py,就是想加些控制吧,不然,直接下指令 + 參數還比較簡單

加入 127.0.0.1 的意思是,這台 WWW Server,只開放 127.0.0.1 的 TCP(8000),其餘 IP 的 TCP(8000)不開放

image

至於 Windows 底下,是否也可以比照辦理?理論上是可行的,只要 Windows 安裝 python 之後,就可以比照辦理。

參考網址:

用 Python 的 SimpleHTTPServer 模組快速建立一個臨時網頁伺服器(Web Server)

其實,python也可以提供簡易的 SMTP Server、Remote syslog、FTP Server…等服務,有興趣可以參考這篇:

How to create network servers in Python (HTTP, FTP, SMTP, SOAP, syslog, …)

說明文件:http://pydoc.org/2.1/SimpleHTTPServer.html

Advertisements
本篇發表於 Bookmark, Linux, python, RHEL 7, ubuntu, Windows。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s