Python中有类似gotty的Web终端库吗,求推荐

python 有类似相关的轮子么,可以直接拿来用的
可以通过 web 操作终端

gotty ttyd


Python中有类似gotty的Web终端库吗,求推荐
4 回复

通过 web 操作终端 chrome 好像有插件?


有,Python里确实有能实现类似gotty功能的库,主要用来把本地命令行程序通过WebSocket暴露成Web终端。

最主流和成熟的选择是 ttyd。虽然它本身是用C写的,但你可以用Python通过subprocess模块轻松调用和集成它。这是最接近gotty体验的方案,功能完整且稳定。

如果你想要一个纯Python实现的方案,可以看看 webterm 这个库。它用Tornado实现了后端,前端用xterm.js,能提供一个基础的Web终端。不过纯Python方案在功能完整性和性能上通常不如ttyd

示例:用 subprocess 在Python中启动ttyd

import subprocess
import signal
import sys

def run_ttyd(command="bash", port=7681):
    """
    启动ttyd进程,将指定的command暴露为Web终端
    command: 要运行的终端命令,如 'bash', 'python'
    port: Web服务端口
    """
    ttyd_cmd = ["ttyd", "-p", str(port), command]
    try:
        # 启动ttyd子进程
        proc = subprocess.Popen(ttyd_cmd)
        print(f"ttyd started on http://localhost:{port}, serving command: {command}")
        print("Press Ctrl+C to stop.")
        # 等待进程结束
        proc.wait()
    except FileNotFoundError:
        print("Error: ttyd not found. Please install it first.")
        print("Installation: https://github.com/tsl0922/ttyd#installation")
        sys.exit(1)
    except KeyboardInterrupt:
        print("\nShutting down ttyd...")
        proc.send_signal(signal.SIGTERM)
        proc.wait()

if __name__ == "__main__":
    # 示例:将bash暴露在7681端口
    run_ttyd("bash", 7681)

运行前准备

  1. 安装ttyd:需要先在你的系统上安装ttyd。例如在Ubuntu上:sudo apt-get install ttyd。其他系统请参考其GitHub仓库的安装说明。
  2. 安装Python依赖:这个脚本只需要Python标准库,无需额外安装。

运行脚本 直接执行上面的Python脚本,它会在后台启动ttyd进程。然后打开浏览器访问 http://localhost:7681,就能看到一个功能完整的Web终端,效果和gotty几乎一样。

总结:追求稳定和完整功能直接用ttyd,想纯Python环境可以试试webterm。

https://github.com/paradoxxxzero/butterfly
A web terminal based on websocket and tornado

websocketd 不过是基于 go 的

回到顶部