【问题标题】:Writing a pseudo terminal in python for a web based ubuntu terminal在 python 中为基于 Web 的 ubuntu 终端编写伪终端
【发布时间】:2011-12-18 09:34:46
【问题描述】:

我有兴趣编写一个基于 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 module我可以写一个伪终端 但是我是 python 新手,我什至无法让该页面上的示例正常工作。

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

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

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

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

【问题讨论】:

  • 你在混淆"terminal" and "shell"
  • @Ignacio Vazquez-Abrams 非常欢迎您编辑和更正术语。
  • 但是你想要的东西会被稀释。我建议你看看每个人的目的和职责,然后决定你的项目需要在哪里拆分。

标签: javascript python unix terminal pty


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 2020-03-12
      • 2021-01-09
      相关资源
      最近更新 更多