Node-Web-Console——基于 Node.js 的网页版 shell

Node-Web-Console(以下简称 NWC)是一个基于 Node.js 开发的网页版 shell 应用,其想法来源于实验室 SDN 相关项目的一次组会讨论,需求大致是在网页中嵌入 shell,然后实现从前端页面展示的网络拓扑中直接进入虚拟机节点进行简单的管理。具体实现上则参考了 web-console,一个基于世界上最好的语言开发的项目。

先来一张界面的截图:

从使用体验来看,NWC 与真正的 shell 并无太大区别。当然,这要感谢 jquery.terminal 插件作出的努力。而从实现原理层面来说, NWC(以及 web-console)并不复杂,其底层通信基于 HTTP 协议之上的 JSON-RPC 2.0 规范实现。JSON-RPC 是一个无状态且轻量级的远程过程调用(RPC)协议,对其不太了解的同学可以参见 JSON-RPC 2.0 Specification 或者 中文翻译版。NWC 的后端 server 接收到用户输入的 command 后开启子进程并执行之,然后将结果返回即可。

除此之外,NWC 还具有以下特性:

  • 易于配置。NWC 基于 Node.js 开发,安装依赖 -> 启动 server -> done!十分方便
  • 移动端友好。NWC 部署完毕后支持移动设备访问页面并进行操作(当然,需要牺牲自动补全等功能),真正的随时随地可访问自己的服务器
  • 易于扩展。项目基于 Koa 开发并使用了尽可能少的中间件。你可以很方便地扩展或者将其集成到自己的项目中去
  • 安全系数高。NWC 使用前需要用户登录,同时其页面设置了标记,不允许搜索引擎索引。你还可以给你的服务器配置 HTTPS 来进一步提高安全系数

当然 NWC 目前还存在一些问题,比如不能执行 vi、ping 等需要等待用户输入或者无穷地执行一些操作的命令。这是因为目前版本的 NWC 底层通信的 RPC 基于 HTTP,其特性决定了服务端只能被动响应客户端的请求而无法主动多次推送结果。下一版的迭代中会尝试用 websocket 替换 HTTP 来解决这一问题。

最后,项目地址在此:https://github.com/ChrisCindy/node-web-console 。欢迎 star,欢迎拍砖。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏那些年我们学过的前端

浅谈localStorage的性能

作者: John Allsopp 文章:分析了通过localStorage读写10KB的数据的时间

20320
来自专栏波波烤鸭

SpringMVC教程6[Restful和拦截器]

  RESTful是一种软件设计规范,是客户端和服务端进行数据交互的一个规范。 早期使用JSP页面开发网页时,数据交互基本都是通过表单提交,然后通过内置对象传递...

12130
来自专栏编程一生

编写代码的「八荣八耻」(上篇)

静儿从19年元旦以来,新创建的4个产品:heimdal、carter、hydra、stark。分别对应漫威里的:海姆达尔(Heimdallr是彩虹桥的守护神,我...

10820
来自专栏那些年我们学过的前端

jquery中ajax参数详解

title: $.ajax参数详解 date: 2017-04-08 15:25:57 tags: ajax categories: ajax

27530
来自专栏cs

html变成json的方法

14540
来自专栏Android 技术栈

好用的Chrome插件

用来清除网页上乱七八糟的广告,比如网站的竞价广告的显示,使自己想要的结果显示在前面。

9420
来自专栏京程一灯

微信小程序商城开发---真机测试有用!!!!

第一部分(黑色框)是pages是整个里的页面,每添加页面一个页面,都要把路径写在这里:

32840
来自专栏Jimoer

分享几个实用的Chrome扩展程序

吐槽一下自己,最近变懒了,博客已经变成月更了。这次分享几个自己工作这几年下来,平常用的比较多的几个谷歌浏览器的扩展程序。

37120
来自专栏java闲聊

Rest- Client

Rest-client 是一种与Postmain类似的工具,但是它更加轻量以及它可以很好地保留接口测试数据,因为本身它就是一个文本文件,便于保存。来个栗子瞅瞅它...

16940
来自专栏那些年我们学过的前端

前后端分离-搭建本地 mock 服务

19120

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励