tty.js:实现Web Terminal
上次使用Socket.io进行前后端的实时连接,这次介绍一个Node.JS编写的工具来实现浏览器来远程连接Linux。通过这个软件我们就可以抛弃putty这样的客户端来进行Linux开发。当然,事先需要在服务器端安装配置这套工具才能使用。
当然这个工具最后提交代码实在一年前,版本号是0.2.13。它向上支持更独立的web终端工具term.js包, 向下依赖低层次的终端母包pty.js。不只是bash shell,还有vim、irssi等工具。Node.JS最新版本就不再支持了,npm安装依赖过程中会报V8引擎编译错误。我们采用比较老的版本(比如v0.10.35)就能解决这个问题。
安装好依赖之后,新建一个tty.js的文件作为程序入口,tty.js依赖于Express,也就用了Express一样的接口名。
var tty = require('tty.js');
var app = tty.createServer({
//config
shell: 'bash',
users: { //web端登录名
root: 'rootroot',
},
port: 8000
});
//test route
app.get('/foo', function(req, res, next){
res.send('bar');
});
app.listen();
以及一个tty的配置,这个配置文件格式是JSON。具体内容待进一步研究。
{
"users": {
"hello": "world"
},
"https": {
"key": "./server.key",
"cert": "./server.crt"
},
"port": 8080,
"hostname": "127.0.0.1",
"shell": "sh",
"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"
]
}
}
使用:在浏览器中输入目标IP加端口号,点击Open Terminal就打开bash shell了。
测试几个常用的命令
感觉以后还能在这上面二次开发几个玩意儿呢?