【问题标题】:vt100 terminal emulation with python / browser使用 python / 浏览器进行 vt100 终端仿真
【发布时间】:2011-12-02 05:21:52
【问题描述】:

我正在尝试为 Web 浏览器构建一个 SSH 客户端(类似于 ajaxterm)。我已经构建了一个使用ParamikoSSHClient.invoke_shell(term='vt100') 的python 后端和一个与前端(HTML + AJAX)通信的Web 服务器。当我通过 SSH 通道发送命令时,系统工作并显示输出,但输出包括 VT100 转义序列。

如果我理解正确,我从 SSH 通道得到的任何东西都应该被解释为 24x80 终端窗口的命令?这意味着转义序列可能会改变颜色、清除屏幕、删除线条、改变线条的行为方式......(我找到了一个很好的列表here)这意味着我不能只清除它们?

我查看了 Ajaxterm 的源代码,但不知道如何使用 Terminal 类(所以我可以将它用于我的目的)。

问题:解释输出流并在浏览器中正确显示终端屏幕的最简单方法是什么?换句话说,是否有一个库可以解析输出并为我保留屏幕内容?

如果我误解了终端的内部工作原理,请告诉我。过去我对他们没有太多经验。 :)

【问题讨论】:

    标签: python ssh terminal vt100


    【解决方案1】:

    几天前我尝试做同样的事情。没写完,找了几个python终端模拟器库。

    我选择pyte,它有干净的API,易于使用。 pyte 的 README 末尾提供了执行相同工作的其他库的列表。

    【讨论】:

    • 谢谢!我试过了,它看起来干净实用。你有幸从中得到颜色吗?如果我理解正确,screen.display 只返回字符内容?
    • screen.display 只返回字符。唯一棘手的部分是显示是一个字符列表。 Char 或多或少是一个命名元组。 Char 的有趣字段是实际 char 的数据,以及颜色的 bg 和 fg。还有一些其他的。您可以查看代码以获取更多信息:github.com/selectel/pyte/blob/develop/pyte/screens.py#L68
    • 好的,我会的。我的python技能还有点欠缺,但我会想办法的。 :) 否则 pyte 看起来正是我想要的,再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 2021-02-05
    • 2011-08-29
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    相关资源
    最近更新 更多