【发布时间】:2011-03-25 16:17:31
【问题描述】:
我正在用 python 创建一个服务器(它正在做什么无关紧要),但我希望它接受 telnet 连接并提供具有行编辑功能的命令行界面(tabcompletion、emacs/vi-mode 等)和每个会话的历史记录。我已经成功创建了 telnet 会话,禁用了线路模式并启用了服务器回显。
我最初的想法是使用 readline,但 python readline 模块似乎只适用于 stdin 上的单个会话;并检查似乎是它工作方式的底层 readline 库。
但是,我想做的是为每个客户端创建一个实例(如果您愿意,可以将其称为状态),并在接收到字符(字节)时向状态提供信息。一旦生成了完整的行,它会将其传递给可以解析它的服务器。
所以我的问题是,如果有一个库可以处理这种事情,那么即使是一个 c 库就足够了。
编辑:澄清一下,我已经有了一个功能齐全的服务器,但我希望 telnet 接口作为重新配置、获取信息等的附加功能。
【问题讨论】:
-
如果您的服务器“功能齐全”,我不确定您可能需要什么额外状态。您能否准确解释一下您目前拥有什么,以及您需要它来做哪些目前无法做到的事情?
-
我希望服务器接受 telnet 连接,它提供了一个命令行界面来访问服务器提供的功能。我添加了一个监听套接字,并为每个连接启用了 telnet 字符模式。这就是我卡住的地方。 (例如,假设我有一个网络服务器,我想提供远程登录访问以更改设置并导航 webroot。这就是我的意思是服务器功能齐全,远程登录部分将是一个插件。服务器的功能无关紧要。)
-
@ext,你能分享一下你是如何准备好基本服务器的吗?我需要使用类似的东西,但我无法实现
disabled line mode and enabled server echo
标签: python sockets telnet libreadline