tty.js https://github.com/chjj/tty.js/
xterm.js https://github.com/xtermjs/xterm.js https://xtermjs.org/
pty.js https://github.com/chjj/pty.js
需要了解它的工作原理。
1)https://Socket.IO/
此库用于将包从客户端传输到服务器。
2)https://github.com/stetz/xstream
此库用于终端视图。
3)https://github.com/mscdex/ssh2
这是主库,用于建立与远程服务器的连接。
步骤1:在项目文件夹中安装这个库
步骤2:从节点端开始,为打开的套接字创建一个server.js文件
步骤3:将客户端套接字连接到节点服务器
复杂的逻辑就是如何使用套接字和ssh 2。
在发出套接字时,需要使用ssh 2库触发ssh命令。
Linux Shell(Command Line Interface shell ,即CLI shell)是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
tty.js是一个支持在浏览器中运行的命令行窗口,基于node.js平台,依赖socket.io库,通过websocket与Linux系统通信。
特性:
支持多tab窗口模型
支持vim,mc,irssi,vifm语法
支持xterm鼠标事件
支持265色显示
支持session
tty.js,一款基于浏览器的终端模拟器。
官方简介如下:
A terminal in your browser using node.js and socket.io. Based on Fabrice Bellard’s vt100 for jslinux.
环境准备
linux-64 位,线上环境
安装 Node
注:这里安装 0.12.x 版本
下载:https://nodejs.org/dist/v0.12.3/node-v0.12.3-linux-x64.tar.gz
$ cd /home
$ wget https://nodejs.org/dist/v0.12.3/node-v0.12.3-linux-x64.tar.gz
$ tar -zxvf node-v0.12.3-linux-x64.tar.gz
$ cd node-v0.12.3-linux-x64
$ ln -s /home/node-v0.12.3-linux-x64/bin/node /usr/local/bin/node # 软连接
$ ln -s /home/node-v0.12.3-linux-x64/bin/npm /usr/local/bin/npm # 软连接
$ node -v
v0.12.3
安装 TTY
1、安装 python
注:这里安装 2.6.x 版本
下载:https://www.python.org/ftp/python/2.6.9/Python-2.6.9.tgz
$ cd /home
$ wget https://www.python.org/ftp/python/2.6.9/Python-2.6.9.tgz
$ tar -zxf Python-2.6.9.tgz
$ cd Python-2.6.9
$ ./configure –prefix=/usr/local/python2.6 # 编译
$ make && make install # 安装
$ ln -s /usr/local/python2.6/bin/python2.6 /usr/bin/python # 软连接
$ python -V
Python 2.6.9
2、安装 tty.js
$ cd /var/www
$ mkdir nodejs
$ cd nodejs
$ mkdir nodejs-tty
$ cd nodejs-tty
$ npm install tty.js # 成功了…这背后得有多少坎坷啊
配置和运行 TTY
1、新建 /var/www/nodejs/nodejs-tty/index.js,内容如下:
var tty = require(‘tty.js’);
var conf = tty.config.readConfig()
, app = tty.createServer(conf);
app.get(‘/foo’, function(req, res, next) {
res.send(‘bar’);
});
app.listen();
2、配置文件 /root/.tty.js/config.json:
{
“users”: {
“hello”: “world”
},
“https”: {
“key”: “./server.key”,
“cert”: “./server.crt”
},
“port”: 3000,
// “hostname”: “127.0.0.1”,
“shell”: “bash”,
“shellArgs”: [“arg1”, “arg2”],
“static”: “./static”,
“limitGlobal”: 10000,
“limitPerUser”: 1000,
“localOnly”: false,
“cwd”: “.”,
“syncSession”: false,
“sessionTimeout”: 600000,
“log”: true,
“io”: {
“log”: false
},
“debug”: false,
“term”: {
“termName”: “xterm”,
“geometry”: [80, 24],
“scrollback”: 1000,
“visualBell”: false,
“popOnBell”: false,
“cursorBlink”: false,
“screenKeys”: false,
“colors”: [
“#2e3436”,
“#cc0000”,
“#4e9a06”,
“#c4a000”,
“#3465a4”,
“#75507b”,
“#06989a”,
“#d3d7cf”,
“#555753”,
“#ef2929”,
“#8ae234”,
“#fce94f”,
“#729fcf”,
“#ad7fa8”,
“#34e2e2”,
“#eeeeec”
]
}
}
3、启动 tty.js
$ node /var/www/nodejs/nodejs-tty/index.js
4、延伸
$ node /var/www/nodejs/nodejs-tty/index.js & # 加&:放到后台运行
$ jobs # 查看后台进程
[1]+ Running node index.js &
若用jobs无法查看到后台 tty.js 进程,则用端口来查找对应的进程:
$ netstat -anp|grep 3000 # 端口使用情况
$ lsof -i :3000 # 查找出占用3000端口的进程
$ kill -9 [pid] # 杀死进程