Node-Web-Console——基於 Node.js 的網頁版 shell

Node-Web-Console(如下簡稱 NWC)是一個基於 Node.js 開發的網頁版 shell 應用,其想法來源於實驗室 SDN 相關項目的一次組會討論,需求大體是在網頁中嵌入 shell,而後實現從前端頁面展現的網絡拓撲中直接進入虛擬機節點進行簡單的管理。具體實現上則參考了 web-console,一個基於世界上最好的語言開發的項目。html

先來一張界面的截圖:
圖片描述前端

從使用體驗來看,NWC 與真正的 shell 並沒有太大區別。固然,這要感謝 jquery.terminal 插件做出的努力。而從實現原理層面來講,
NWC(以及 web-console)並不複雜,其底層通訊基於 HTTP 協議之上的 JSON-RPC 2.0 規範實現。JSON-RPC 是一個無狀態且輕量級的遠程過程調用(RPC)協議,對其不太瞭解的同窗能夠參見 JSON-RPC 2.0 Specification 或者 中文翻譯版。NWC 的後端 server 接收到用戶輸入的 command 後開啓子進程並執行之,而後將結果返回便可。node

除此以外,NWC 還具備如下特性:jquery

  • 易於配置。NWC 基於 Node.js 開發,安裝依賴 -> 啓動 server -> done!十分方便
  • 移動端友好。NWC 部署完畢後支持移動設備訪問頁面並進行操做(固然,須要犧牲自動補全等功能),真正的隨時隨地可訪問本身的服務器
  • 易於擴展。項目基於 Koa 開發並使用了儘量少的中間件。你能夠很方便地擴展或者將其集成到本身的項目中去
  • 安全係數高。NWC 使用前須要用戶登陸,同時其頁面設置了標記,不容許搜索引擎索引。你還能夠給你的服務器配置 HTTPS 來進一步提升安全係數

固然 NWC 目前還存在一些問題,好比不能執行 vi、ping 等須要等待用戶輸入或者無窮地執行一些操做的命令。這是由於目前版本的 NWC 底層通訊的 RPC 基於 HTTP,其特性決定了服務端只能被動響應客戶端的請求而沒法主動屢次推送結果。下一版的迭代中會嘗試用 websocket 替換 HTTP 來解決這一問題。 git

最後,項目地址在此:https://github.com/ChrisCindy...直接點我也行) 。歡迎使用,歡迎拍磚。github

本文首發於個人博客(點此查看),歡迎關注。web

相關文章
相關標籤/搜索