1. 程式人生 > >用瀏覽器檢視路由器上mentohust的log。

用瀏覽器檢視路由器上mentohust的log。

靈感來源:https://code.google.com/p/mentohust/issues/detail?id=207

終於又週五了,上課上的蛋疼,下午上完課不想看扯淡的全英論文,就又想起來上面那個地址裡面提到的問題了

剛開始嘗試直接在路由上安裝個nginx,然後

ln -s /jffs/tmp/mentohust.log /jffs/www/index.log

瀏覽器開啟一看,我去,不光亂碼,換行都沒

又嘗試在log檔案開頭新增一句

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

擦,大部分不亂碼了,但是最關鍵的系統通提示亂了。。。。。。。蛋疼,並且還沒換行

(系統通告是GBK編碼,其他部分是UTF-8 )

然後我想去改下mentohust程式碼,在輸出到檔案的時候自行轉碼,用libiconv應該就行,然後發現輸出到檔案是用重定位stdout流實現的,,,,

艹艹艹草,這你嘛的讓我怎麼改啊,讓我重寫printf啊!!!!

算了,放棄,,,,

然後  下面的程式碼就出來了。。。

from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
from cStringIO import StringIO


def getbuf():
    buf = ''
    def c(line):
        tmp = line.decode("utf-8")
        tmp = tmp.encode("gb2312")
        return tmp
    def rl(line):
        try:
             return c(line)
        except:
            p = line.strip().split()
            try:
                p[1] = c(p[1])
            except:
                pass
            return ' '.join(p)
            
    with open("/jffs/tmp/mentohust.log") as f:
        for line in f:
            tmp = rl(line)
            if tmp[0] != tmp[1]:
                buf += '$$ \xcf\xb5\xcd\xb3\xcc\xe1\xca\xbe: '
            buf += tmp + '<br>'
    return buf


class TestHTTPHandle(BaseHTTPRequestHandler):
    def do_GET(self):
        if self.path == "/sss":
            self.protocal_version = "HTTP/1.1" 
            self.send_response(200)
            self.send_header("Content-type", "text/html; charset=gb2312")
            self.end_headers()
            self.wfile.write(getbuf())
        else:
            self.send_error(404)


http_server = HTTPServer(('192.168.1.1', int(80)), TestHTTPHandle)
http_server.serve_forever() 



最蛋疼的一點就是   系統提示那一行是UTF-8和GBK都有,蛋疼的要死,只能except: 出來單獨處理了。。。

這個指令碼的效能,還行,在500主頻的5358上重新整理一次網頁只佔不到2%的CPU,記憶體幾乎沒佔

我在實驗室開啟宿舍的路由,效果圖:


PS:我路由器現在的啟動指令碼,各種小玩意,DDWRT真耐玩。。


PPS:如果遇到路由器空間過小無法安裝完整的python,參見下面連結解決,最好的還是掛個U盤,就像上圖所示,我在/JFFS掛了個8G U盤,隨便玩了。

當然,想順暢的跑起來64MB的記憶體是必須的,如果是32MB的路由,別折騰了,卡死

http://www.yonsm.net/post/645

https://code.google.com/p/wallproxy-plus/issues/detail?id=145&can=1&q=%E7%B2%BE%E7%AE%80