2010-08-05 147 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的功能“。