gpt4 book ai didi

python - 如何通过 SSH 为 Python CLI 应用程序提供服务

转载 作者:太空狗 更新时间:2023-10-30 01:10:05 26 4
gpt4 key购买 nike

我正在用 Python 编写一个带有 Urwid 前端和 MongoDB 后端的应用程序。最终目标是能够通过 SSH 为应用程序提供服务。该应用程序有自己的身份验证/身份系统。我不关心为每个用户启动新进程的开销,并发用户的预期数量很低。由于客户端不会记忆起任何状态信息,而是全部存储在数据库中,因此我不关心 session 本身,除非出于身份验证目的。

我想知道是否有任何方法可以按原样为应用程序提供服务,而无需滚动我自己的套接字服务器代码或使用 Twisted 重新编码应用程序。老实说,我不知道 Urwid 和 Twisted 是如何一起玩的。我看到 Urwid 有一个 TwistedEventLoop 方法,该方法声称使用扭曲 react 器,但我找不到任何通过扭曲连接运行 Urwid 应用程序的示例代码。示例将不胜感激,即使是简单的示例。我也看过 ZeroMQ,但它似乎比 Twisted 更难以理解。简而言之,我探索了许多不同的库,它们声称通过 tcp 为应用程序提供服务,其中大部分是通过 telnet。几乎所有的人都专注于 http。

最坏的情况我预计我可能会创建一个极其锁定的用户作为全局登录并使用 chrooted SSH session 。这样每个用户都有自己的 chroot/process/client。是的,我知道这可能是一个“非常糟糕的主意 (tm)”。但我不得不把它扔在那里作为一种可能性。

我感谢任何建设性的反馈。侮辱、责备和傲慢会被怒视、打印出来并向其吐口水。

-CH

最佳答案

Twisted 有一个用于编写此类内容的层:twisted.conch.insults .我要小心不要卖多了;它仍然需要更多文档并且缺少一些功能。正如文档字符串所说,它“目前非常基础”。

侮辱是有原因的。我的理解是,即使在 Twisted 模式下,Urwid 也在直接与文件描述符对话,因此不能通过同一线程加密和传输其输出;有人需要读取该文件描述符的另一端。我相信 Twisted 模式更多的是关于使用 Urwid 的控制台应用程序,该应用程序将 Twisted 网络用于其他东西;正如您可能希望在客户端应用程序或具有控制台 View 的服务器中那样。

如果您不介意每个连接一个进程,您可以使用 Conch 编写一个 SSH 服务器,它使用 PTY 将您的 Urwid 程序生成为一个子进程,并提供有关其身份验证和环境的信息,例如,通过环境变量。查看spawnProcess API和让-保罗·卡尔德隆的 excellent series on using Conch .

关于python - 如何通过 SSH 为 Python CLI 应用程序提供服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7116553/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com