Python行编辑Telnet服务器

3
我正在使用Python创建一个服务器(它正在做什么并不重要),但我希望它能接受telnet连接并提供具有行编辑功能(tabcompletion、emacs/vi-mode等)和每个会话的历史记录的命令行界面。我已经成功创建了telnet会话,禁用了行模式并启用了服务器回显。
我的初步想法是使用readline,但是Python readline模块似乎只适用于stdin上的单个会话;并且检查底层的readline库似乎是这种工作方式。
然而,我想做的是为每个客户端创建一个实例(如果您喜欢,可以称之为状态),并在收到字符(字节)时将其传递给状态。一旦生成了完整的行,它就会将其传递给可能解析它的服务器。
因此,我的问题是是否有一个处理这种事情的库,即使是一个C库也足够。
编辑:为了澄清,我已经有一个完全功能的服务器,但我希望telnet接口作为附加功能来重新配置、获取信息等。

如果您的服务器“完全功能”,我不确定您需要什么额外状态。您能否解释一下您目前的情况以及它不能做到的事情? - Kylotan
我希望服务器接受telnet连接,提供命令行界面以访问服务器提供的功能。我已经添加了一个监听套接字,并为每个连接启用了telnet字符模式。这就是我卡住的地方。(举个例子,假设我有一个Web服务器,我希望提供telnet访问以更改设置和导航Web根目录。这就是我所说的服务器完全可用,而telnet部分将是附加组件。服务器的功能不相关。) - ext
@ext,你能分享一下你是如何准备基本服务器的吗?我需要使用类似的东西,但我无法实现“禁用行模式并启用服务器回显”。 - Tarun Lalwani
3个回答

2

看起来你已经解决了TELNET部分,现在想要提供类似于BASH、KSH等shell中常见的功能。我自己没有尝试过,但可以看看shython:它是一个多才多艺的shell,具有bash和python的特性。


1

也许cmd库会对你有帮助或者感兴趣?


我只能为单个会话工作,并使用readline。我需要一些东西来为每个会话存储状态,以便它们可以独立地相互交互。 - ext
正如链接页面所提到的,您可以覆盖其输入方式,以便它使用除readline之外的其他内容。至于会话,我认为您可以创建多个Cmd对象。 - Amber


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接