造了一个新的轮子 ttyd -- 分享任意命令行程序到网页上

2016-09-14 09:28:20 +08:00
 tsl0922

这个项目最初的灵感来源于平时操作无线路由器时想在网页上执行一些命令,但是目前的开源的路由器系统( openwrt )没有一个很好的网页终端模拟器,最多也只是支持执行一个命令然后把结果显示到网页上,完全没有交互。有些路由器还不限制 top 之类的命令执行,一执行就可能会直接卡住网页界面。

找了一下类似的程序,发现了 WettyGoTTY,但是 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 贡献代码。

7346 次点击
所在节点    分享创造
12 条回复
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
fyibmsd
2016-09-14 10:13:31 +08:00
不错
clanned
2016-09-14 10:48:06 +08:00
可以试试 [shellinabox]( https://github.com/freedocs/docs/blob/master/为%20r6300v2%20 和%20ac68u%20ddwrt%20 安装和编译可执行文件.md#编译-shellinabox)
itfanr
2016-09-14 11:54:08 +08:00
bao3
2016-09-14 12:38:27 +08:00
楼主,用 3 楼的就可以了,非常方便,这么多年一直是 OPwrt + shellinabox 。
fhefh
2016-09-14 15:12:58 +08:00
mark~
wshcdr
2016-09-14 17:10:33 +08:00
MARK 一下
Tink
2016-09-15 07:39:12 +08:00
@clanned 这个对于只能私钥登陆的是不是就没办法了?
clanned
2016-09-15 08:25:22 +08:00
@Tink 没试过,总有办法的吧。可以搞成无密码,用 HTTPS + BASIC auth
tsl0922
2016-09-15 14:20:38 +08:00
@itfanr 类似,但是 ttyd 更灵活些,可以执行任意程序,你贴的那个项目其实就相当于 `ttyd ssh user@host -p port`
mingyun
2016-09-17 20:46:31 +08:00
mark
itfanr
2016-09-19 09:13:27 +08:00
@tsl0922 哦哦 看了你的代码,代码量不大,但是由于用了好多外部库,所以就没懂 有空再研究

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/306100

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX