这个项目最初的灵感来源于平时操作无线路由器时想在网页上执行一些命令,但是目前的开源的路由器系统( openwrt )没有一个很好的网页终端模拟器,最多也只是支持执行一个命令然后把结果显示到网页上,完全没有交互。有些路由器还不限制 top 之类的命令执行,一执行就可能会直接卡住网页界面。
找了一下类似的程序,发现了 Wetty 和 GoTTY,但是 Wetty 需要 node 运行环境, GoTTY 编译后的二进制文件太大,多数路由器的 flash 都比较小,不适合集成到路由器固件里.
一直想自己写一个,上周末终于有时间开工,现在算是可以用了,但是目前只实现了基本的 PTY 转发和网页上的显示交互,还不够完善。
项目地址: https://github.com/tsl0922/ttyd
ttyd 基本上是 GoTTY 到 C 语言的移植,所以有一些可以共用的部分是直接使用 GoTTY 里的代码的。
效果:
截图里执行的命令是 bash
,如果想要登陆后才能使用可以执行 login
,这样网页上就和 ssh 登陆一样了。
虽然 ttyd 的目标是运行到路由器上,但是目前只在 PC 的 Mac 和 Linux 机器上测试过,还没交叉编译到路由器上测试过,主要是功能还不够完善,等完善了些再到路由器上测试, ttyd 的开发主要在 Mac 下进行。
欢迎 Star/Fork ,如果有什么意见建议或 bug 可以在 issues 里反馈,或者直接发 PR 贡献代码。
新增了 homebrew 安装支持:
brew tap tsl0922/ttyd
brew install ttyd --HEAD
因为还没有一个正式稳定的 release,所以目前只提供 HEAD 版本安装,以后发布稳定版本会考虑提交到官方 homebrew 仓库里。
添加了 OpenWrt 的 Makefile 🎉 ,有兴趣的可以先自己编译一个玩玩,等程序完善些我会发布一个 release 并提交到官方软件源。
首个正式 release 发布:https://github.com/tsl0922/ttyd/releases/tag/1.0.0 ,现在可以不用加 --HEAD
直接 brew install tsl0922/ttyd/ttyd
来安装了。
1
miaoever 2016-09-14 09:51:58 +08:00
当年用 Node.js 写过一个类似的.
用户想要分享自己的终端,只需运行 client ,自动生成一个 url , 比如: http://etherpty.io/b0f3003a47574a9dada220208e389a92 观众只需要在浏览器中访问该 url 就可以看到实时的终端界面。 同时还支持观众在浏览器中远程操控终端。 sharing client: https://github.com/miaoever/etherpty-cli backend server: https://github.com/miaoever/etherpty-server |
2
fyibmsd 2016-09-14 10:13:31 +08:00
不错
|
3
clanned 2016-09-14 10:48:06 +08:00 via Android
可以试试 [shellinabox]( https://github.com/freedocs/docs/blob/master/为%20r6300v2%20 和%20ac68u%20ddwrt%20 安装和编译可执行文件.md#编译-shellinabox)
|
4
itfanr 2016-09-14 11:54:08 +08:00
|
5
bao3 2016-09-14 12:38:27 +08:00 via Android
楼主,用 3 楼的就可以了,非常方便,这么多年一直是 OPwrt + shellinabox 。
|
6
fhefh 2016-09-14 15:12:58 +08:00
mark~
|
7
wshcdr 2016-09-14 17:10:33 +08:00
MARK 一下
|
10
tsl0922 OP @itfanr 类似,但是 ttyd 更灵活些,可以执行任意程序,你贴的那个项目其实就相当于 `ttyd ssh user@host -p port`
|
11
mingyun 2016-09-17 20:46:31 +08:00
mark
|