【转】 ttyd -- 分享任意命令行程序到网页上

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

找了一下相似的程序,发现了 Wetty  GoTTY,可是 Wetty 须要 node 运行环境, GoTTY 编译后的二进制文件太大,多数路由器的 flash 都比较小,不适合集成到路由器固件里。node

一直想本身写一个,上周末终于有时间开工,如今算是能够用了,可是目前只实现了基本的 PTY 转发和网页上的显示交互,还不够完善。linux

项目地址

https://github.com/tsl0922/ttydgit

功能特点

  • C 语言编写,在速度和内存占用上相比其它实现有一些优点
  • 实时交互,网页和服务器端使用 websocket 通讯(基于 libwebsockets)
  • 前端使用 chromium hterm 实现终端模拟,功能完备
  • 安全,支持配置用户名密码认证(Basic Auth),还支持 SSL 加密通讯(基于 OpenSSL
  • 能够执行任意命令行程序,不仅是 bash 之类的 shell
  • 跨平台,能够在 Linux、macOS、OpenWrt 下运行

安装方法

mac 用户能够直接用 homebrew 安装:brew install ttyd,linux 下目前只能手工编译安装,具体步骤请查看项目的 READMEgithub

命令行参数

ttyd is a tool for sharing terminal over the web

USAGE:
    ttyd [options] <command> [<arguments...>]

VERSION:
    1.0.0

OPTIONS:
    --port, -p              Port to listen (default: 7681)
    --interface, -i         Network interface to bind
    --credential, -c        Credential for Basic Authentication (format: username:password)
    --uid, -u               User id to run with
    --gid, -g               Group id to run with
    --signal, -s            Signal to send to the command when exit it (default: SIGHUP)
    --reconnect, -r         Time to reconnect for the client in seconds (default: 10)
    --ssl, -S               Enable ssl
    --ssl-cert, -C          Ssl certificate file path
    --ssl-key, -K           Ssl key file path
    --ssl-ca, -A            Ssl ca file path
    --debug, -d             Set log level (0-9, default: 7)
    --version, -v           Print the version and exit
    --help, -h              Print this text and exit

运行效果

screenshot

截图里执行的命令是 bash,若是想要登录后才能使用能够执行 login,这样网页上就和 ssh 登录同样了。web

其它玩法

除了直接运行 shell 外,ttyd 还能够有不少有趣的玩法,例如:docker

  • 若是你想给网页上的每一个人开个 docker 容器玩,能够用下面的命令启动 ttyd,这样每次打开网页都会进入 docker 容器内的 shell:shell

    ttyd docker run -it --rm ubuntu bash
  • 若是你想一打开网页就能直接 ssh 到另外一个机器上(省去进入 bash 再执行 ssh),能够这样启动 ttyd:ubuntu

    ttyd ssh root@192.168.1.1
  • 你甚至还能够直接执行一个 vim,这样打开进入网页后就只有一个 vim 编辑器能够操做:vim

    ttyd vim

ttyd 基本上是 GoTTY 到 C 语言的移植,因此有一些能够共用的部分是直接使用 GoTTY 里的代码的。

ttyd 的开发主要在 Mac 下进行,支持 macOS 和 Linux 系统,还提供了一个能够给 OpenWrt 编译出二进制文件的 Makefile,可是我还没空在真机上测试,有兴趣的能够本身编译出 ipk 包传到路由器运行试试。

 

 

转自  https://my.oschina.net/tsl0922/blog/747506

相关文章
相关标签/搜索