我正在尝试为Web浏览器构建SSH客户端(类似于ajaxterm)。我构建了一个python后端,它使用Paramiko的SSHClient.invoke_shell(term='vt100')
和一个与前端(HTML + AJAX)通信的Web服务器。当我通过SSH通道发送命令时,系统工作并显示输出,但输出包括VT100转义序列。
如果我理解正确,我从SSH通道获得的任何内容都应该被解释为24x80终端窗口的命令?这意味着转义序列可能会改变颜色,清除屏幕,删除线条,改变线条的行为......(我找到了一个好的列表here)这意味着我不能只清除它们?
我检查了Ajaxterm的源代码,但无法弄清楚如何使用Terminal类(因此我可以将它用于我的目的)。
问题:解释输出流并在浏览器中正确显示终端屏幕的最简单方法是什么?换句话说,是否有一个库可以解析输出并为我保留屏幕内容?
如果我误解了终端的内部工作原因,请告诉我。我过去没有多少经验。 :)
答案 0 :(得分:3)
我几天前试图做同样的事情。我没有完成它,但我发现了一些python终端模拟器库。
我选择pyte,它具有干净的API并且易于使用。 pyte的自述文件末尾提供了执行相同工作的其他库的列表。