【问题标题】:python line editing telnet serverpython行编辑telnet服务器
【发布时间】: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


【解决方案1】:

听起来你已经对 TELNET 部分进行了排序,现在你想提供 BASH、KSH 等 shell 中常见的功能。我自己没有尝试过,但是看看 shython:"一个兼具 bash 和 python 功能的多功能 shell”。

【讨论】:

    【解决方案2】:

    也许cmd 库可能会引起您的兴趣/帮助?

    【讨论】:

    • 我只为单个会话工作并使用 readline。我需要一些东西来存储每个会话的状态,以便它们每个人都能够相互独立地进行交互。
    • 正如链接页面所提到的,您可以覆盖其输入方式,以便它使用 readline 以外的其他内容。至于会话,我相信你可以创建多个 Cmd 对象。
    【解决方案3】:
    猜你喜欢
    • 2011-09-15
    • 2011-04-30
    • 2019-10-16
    • 2013-11-10
    • 2011-06-27
    • 2014-03-29
    • 1970-01-01
    • 2022-01-21
    • 2011-09-23
    相关资源
    最近更新 更多