2011-10-30 121 views
2

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

我已经摆弄了Anyterm​​,它在后端服务器上使用ROTE:“VT102终端仿真的简单C库”,终端UI使用javascript/html。问题是我无法在同一个窗口中打开两个终端。

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

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

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

我打算让python脚本提供一个带有javascript/html终端的http服务器,我会写(这是我想为这个项目选择python的主要原因)。然后我想让web ui跟后台终端“服务器”通话并将结果返回到web ui。

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

我知道JavaScript/PHP和熟悉bash脚本 - 在这一点上,我可以去一个基于C或基于python的后端服务器,python是否适合这个项目?

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

+0

你混淆[“终端”和“壳”(HTTP ://superuser.com/questions/144666/what-is-the-difference-between-shell-console-and-terminal)。 –

+0

@Ignacio Vazquez-Abrams欢迎您编辑和更正术语。 – Logan

+0

但是,你想要的会变得稀释。我建议你看看每个目的和责任,并决定你的项目需要拆分的地方。 –

回答

4

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

现在,你可以建立一个外壳,这将在终端而不是bash或破折号工作;或者您可以构建可在互联网上使用的终端仿真器;你可以运行任何现有的shell。两者都是具有挑战性的任务。

Python文档没有多大用处,我建议您首先应该首先搜索更多这些概念 - 不仅仅是Python引用,还有C,C++。最后,如果你想在shell中运行Emacs或者nano或者其他一些高级程序,你想使用pty模块。

0

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