2

我有兴趣编写一个基于 Web 的终端,它可以在 ubuntu 终端中执行和自动完成命令。

我摆弄了 Anyterm http://www.anyterm.org,它在后端服务器上使用 ROTE:“用于 VT102 终端仿真的简单 C 库”,在终端 ui 上使用 javascript/html。问题是我不能让它在同一个窗口中打开两个终端。

在做了一些研究之后,我决定在 python 中编写一个终端服务器/伪终端(以正确的术语为准),它可以:

  • 在 ubuntu 终端执行命令(如 ls、grep 等...)
  • 自动完成命令(如 $gdi (pressed tab) $gedit)
  • 并同时打开多个终端实例(当在一个终端中键入 ls 时,另一个终端不会将 ls 识别为自另一个终端会话以来的最后一个命令)

我发现使用pty python 模块我可以编写一个伪终端,但是我是 python 的新手,我什至无法让该页面上的示例正常工作。

我打算让 python 脚本使用我将编写的 javascript/html 终端 ui 为 http 服务器提供服务(这是我想为这个项目选择 python 的主要原因)。然后我想让 web ui 与后端终端“服务器”对话并将结果返回给 web ui。

如果你能指出我正确的方向,也许告诉我应该使用哪个模块 - 如果不是 pty - 并给我一些关于如何编写 python 伪终端服务器的想法,我将不胜感激。

我知道 javascript/php 并且熟悉 bash 脚本 - 此时我可以选择基于 C 或基于 python 的后端服务器,python 是否适合这个项目?

注意:我打算编写一个使用 ajax post 或 get 方法从后端服务器检索终端输出的 ui。

4

2 回答 2

4

您需要先学习基本术语。shell是解释输入命令行的程序,例如grep "foo" abc.txt终端仿真器是模拟终端的程序。终端是一种带有显示器和键盘的设备,在 1970 年代用于访问 UNIX 大型机。伪终端pty是支持终端仿真器的设备节点,与“真实终端设备”(tty1)相反。

现在,您可以构建一个shell,它可以在终端而不是 bash 或 dash 中工作;或者您可以构建一个可在互联网上使用的终端仿真器;您可以在其中运行任何现有的 shell。两者本身都是具有挑战性的任务。

Python 文档用处不大,我建议您首先在谷歌上搜索更多这些概念——不仅是 Python 参考,还有 C、C++。

最后,如果你想在你的 shell 中运行 Emacs 或 nano 或其他一些高级程序,你想使用 pty 模块。

于 2011-10-30T22:34:55.857 回答
0

我有一个朋友做了类似的事情,但他是通过 Google 聊天完成的,我不知道它会有多大帮助,但看看 xmpp(python 模块)也许它可以帮助你,甚至这里是一个链接他的源代码: chatIO 我没有和他一起工作,但他很容易使用 Good Luck

于 2011-10-30T22:36:42.550 回答