-4

我想在网络浏览器中实现 ssh 终端客户端。我需要为 ruby​​ 中的 ssh 连接实现服务器。有一个 net/ssh 库,但我不知道如何处理像 vim 或午夜指挥官这样的全屏程序。

4

1 回答 1

3

让我尝试重新解析您的问题:您正在尝试在 Web 浏览器上模拟 SSH 控制台会话。您似乎已经为大多数命令实现了简单的控制台输入/输出,但是当您尝试像“vim”或午夜指挥官这样的全屏命令时,似乎出现了垃圾。

您看到的问题与 UN*X 机器如何处理终端上的全屏控制台输出有关。全屏控制台应用程序参考 terminfo/termcap 库来确定清除屏幕、删除一行、插入一行、将光标放在特定点等所需的转义序列。你看到的是这些的原始输出默认终端类型出现的转义序列,很可能是基于 ANSI 的。

要解决您的问题,您必须:

  1. 确定您的控制台应用程序模拟的终端类型 - 或者您可以将其强制为确定的。
  2. 通过查询 termcap/terminfo 数据库来解码终端类型的转义序列。
  3. 在您的 Web 浏览器应用程序上实现终端功能。

根据您用于实现浏览器应用程序的技术堆栈,您可能能够找到其他人可能为解决此问题而开发的库。

于 2012-05-24T20:32:34.273 回答