2010-08-05 145 views
3

我正在python中創建一個服務器(它做的是無關緊要的),但我希望它接受telnet連接並提供一個命令行界面和行編輯功能(tabcompletion,emacs/vi-模式等)以及每個會話的歷史記錄。我已經成功創建了telnet會話,禁用線路模式並啓用了服務器回顯。蟒蛇行編輯telnet服務器

我最初的想法是使用readline,但python readline模塊似乎只適用於stdin上的單個會話;並檢查似乎是其工作方式的底層readline庫。

然而,我想要做的是爲每個客戶端創建一個實例(如果您喜歡,請調用它的狀態),並且當字符(字節)被接收到狀態。一旦生成了一個完整的行,它會將它傳遞給可能解析它的服務器。

所以我的問題是,如果有一個庫處理這種事情,甚至一個C庫就足夠了。

編輯:爲了澄清,我有一個全功能的服務器了,但我想在Telnet接口作爲補充的重新配置,獲取信息等

+0

我不知道你會需要什麼額外的狀態,如果你的服務器是「全功能」。你能解釋一下到目前爲止你所擁有的東西以及你現在需要做些什麼嗎? – Kylotan 2010-08-05 10:17:58

+0

我希望服務器接受telnet連接,它提供了一個命令行界面來訪問服務器提供的功能。我添加了一個偵聽套接字,併爲每個連接啓用了telnet字符模式。這是我卡住的地方。 (例如,假設我有一個web服務器,我想提供telnet訪問來更改設置並導航webroot。這就是我的意思,即服務器功能完全,telnet部分將是一個附加組件。服務器的功能是無關緊要的。) – ext 2010-08-05 11:25:45

回答

1

也許cmd庫可能是利息/幫助?

+0

我只適用於一個會話並使用readline。我需要爲每個會話存儲一個狀態,因此每個會話都可以獨立進行交互。 – ext 2010-08-05 08:35:50

+0

隨着鏈接頁面的提及,您可以覆蓋其輸入方式,以便它使用readline以外的內容。至於會話,我相信你可以創建多個Cmd對象。 – Amber 2010-08-05 16:15:40

2

聽起來好像你已經對TELNET部分進行排序了,現在你想要提供像BASH,KSH等shell中常見的功能。我沒有自己嘗試過,但看起來像shython:「a多功能的外殼具有bash和python的功能「。