Webtailf (tail -f to the web-browser)

tail命令和tailf命令對于每個玩linux的人相比都特別熟悉,這里就不細(xì)表了。

但是如果你想把tailf后輸出到web端,怎么做?對!長連接websocket(我稱之為webtailf)。

websocket
websocket

但是具體要怎么做?我搜了github,發(fā)現(xiàn)竟然沒有好的解決方案,不過在這篇文章里面,發(fā)現(xiàn)了一條神奇的命令:

(echo -e 'HTTP/1.1 200 OK\nAccess-Control-Allow-Origin: *\nContent-type: text/event-stream\n' \
&& tail -f /path/to/some/file | sed -u -e 's/^/data: /;s/$/\n/' ) | nc -l 1234

ps. 簡書代碼不支持折行,我給手動折行了,人家本身是一行的。

然后配合這段js代碼:

new EventSource("http://localhost:1234/").onmessage = function(e) {
    console.log(e.data);
};

你就可以霸氣的按F12,在console里面看到tail命令輸出的內(nèi)容了!


咱們看看這行霸氣的shell命令(真是1行shell==1w行C)做了什么:

(echo -e 'HTTP/1.1 200 OK\nAccess-Control-Allow-Origin: *\nContent-type: text/event-stream\n'

這個簡單,就是返回http頭,說明這個是長連接。

&& tail -f /path/to/some/file | sed -u -e 's/^/data: /;s/$/\n/') | nc -l 1234

這句是將文件tailf出來,然后傳給sed,進(jìn)行斷句,然后在每行前面加上data: ,之后和http頭一起打包,傳給netcat,通過監(jiān)聽1234端口,發(fā)送出去,之后瀏覽器就可以拿到tailf的信息了。

當(dāng)然,這只是一個玩具,因?yàn)閚c只支持一次連接,如果連接斷了,需要重啟nc。

那么,說到最后,什么才是可用的?

websocketd --port 1234 tail -f /path/to/file

官網(wǎng)在這里,Github在這里,7K Star哦!


為了你們方便,同樣給出客戶端的demo吧(同樣也是簡單到爆?。?/p>

var ws = new WebSocket('ws://localhost:1234/');
ws.onmessage = function(event) {
     console.log(event.data);
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,353評論 2 33
  • 本文承接之前寫的三十分鐘學(xué)會AWK一文,在學(xué)習(xí)完AWK之后,趁熱打鐵又學(xué)習(xí)了一下SED,不得不說這兩個工具真的堪稱...
    mylxsw閱讀 4,520評論 3 74
  • 第1章 小試牛刀 $ 是普通用戶,# 表示管理員用戶 root。 shebang:#!。sharp / hash ...
    巴喬書摘閱讀 6,684評論 1 4
  • sed與awk實(shí)例 文本間隔 在每一行后面增加一空行 將原來的所有空行刪除并在每一行后面增加一空行。這樣在輸出的文...
    stuha閱讀 2,032評論 0 20
  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,234評論 0 0

友情鏈接更多精彩內(nèi)容