2011-10-30 85 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 我沒有和他進行這項工作,但它真的很容易讓他使用 好運