BV1AL 之無所不記

2007-09-22

python伺服器HTTP

臨時要將檔案給別台電腦,大概最多人想到的是E-Mail寄,不然就是
MSN傳,再不然就得啟動samba、ftp、apache等等大傢伙。

其實系統裡便有方便啟動的server,像是busybox的httpd,可以用
busybox httpd -h /PATH/
busybox 的httpd 特別的是它不能讓人隨便 browse, 因此要告知對方以
http://你的主機/檔名 (也就是放在 /PTAH/ 下的檔名)
的方式取得你要給他的檔案,這也可算是好處,不會被隨便抓到檔案
,還有busybox httpd 也支援 CGI, 可以做一些互動功能。

除了busybox外,python也是個好用的工具,可以用單一行簡單的啟動
HTTP server,像是
python -c "from SimpleHTTPServer import test; test()"
如此就啟動了在port 8000的 http server, 位置就是你執行指令時的目錄.
python的Simple HTTP Server支援 index.htm(或html),可以被browse。
如果你裝的是python 2.4或以上, 可以用另一種呼叫方式

python -m SimpleHTTPServer 或
python -m SimpleHTTPServer 8080 (指定 8000以外的port)
如果一定要用80,必需sudo
sudo python -m SimpleHTTPServer 80

用HTTP讓人抓檔的好處是可以跨平台以及幾乎到處可通,而python
這個module的port是寫在BaseHTTPServer.py的
if sys.argv[1:]:
port = int(sys.argv[1])
else:
port = 8000
最好在 displaypath=cgi.escape(..........) 之下加一行
f.write("<meta http-equiv=content-type content=\"text/html; charset=UTF-8\">")
才能避免browse directory時中文檔名變亂碼(如果系統是用UTF-8的話)
總之一行就能啟用HTTP server又能指定port真的很好用!

0 Comments:

張貼留言

<< Home