在python中为基于web的ubuntu终端编写一个伪终端

时间:2011-10-30 22:22:52

标签: javascript python unix terminal pty

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

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

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

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

我发现用pty python module我可以写一个伪终端 但是我是python的新手,我甚至无法在该页面上获得示例。

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

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

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

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

2 个答案:

答案 0 :(得分:4)

您需要先学习基本术语。 shell 是解释输入命令行的程序,例如 grep“foo”abc.txt 终端仿真器是一个模仿终端的程序。终端是具有显示器和键盘的设备之一 在20世纪70年代用于访问UNIX大型机。 pseudoterminal pty 是支持终端仿真器的设备节点,而不是“真实终端设备”(tty1)。

现在,你可以构建一个 shell ,它可以在终端而不是bash或dash中工作;或者你可以建立一个可以通过互联网使用的终端模拟器;你可以运行任何现有的shell。两者都是具有挑战性的任务。

Python文档没什么用处,我建议你首先应该先搜索更多这些概念 - 不仅是python引用,还包括C,C ++。

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

答案 1 :(得分:0)

我有一个朋友做了类似的事情,但是他通过谷歌聊天做了,我不知道它有多大的帮助但是看看xmpp(python modual)也许它可以帮到你,甚至这里是他的源代码的链接: chatIO 我没有与他合作,但他很容易使用 祝你好运