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

相关文章
相关标签/搜索