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)
运行前准备
- 安装ttyd:需要先在你的系统上安装ttyd。例如在Ubuntu上:
sudo apt-get install ttyd。其他系统请参考其GitHub仓库的安装说明。 - 安装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 的

