用瀏覽器檢視路由器上mentohust的log。
阿新 • • 發佈:2018-12-31
靈感來源: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