【发布时间】:2010-12-18 00:20:15
【问题描述】:
如何运行 Python 程序,使其输出其 STDOUT 并将其 STDIN 输入到远程 telnet 客户端/从远程 telnet 客户端输入?
程序所做的只是打印出文本,然后反复等待 raw_input()。我希望远程用户无需 shell 访问即可使用它。可以是单线程/单用户。
【问题讨论】:
-
这是在 Unix 还是 Windows 环境下?
如何运行 Python 程序,使其输出其 STDOUT 并将其 STDIN 输入到远程 telnet 客户端/从远程 telnet 客户端输入?
程序所做的只是打印出文本,然后反复等待 raw_input()。我希望远程用户无需 shell 访问即可使用它。可以是单线程/单用户。
【问题讨论】:
在 Unix 系统上,您可以为此使用 inetd。它会为您打开网络连接,因此您的程序将按原样运行。
【讨论】:
将 Python 脚本放入该用户的 shell。 (或者如果这不起作用,请将其包装在 bash 脚本甚至可执行文件中)。
(您可能必须将其放入 /etc/shells(或等价物)中)
【讨论】:
如果您不需要完整的 telnet 功能,您可以使用套接字。
查看标准 python 库中的 Socket Server 模块。 它可以让您轻松编写一个程序来侦听端口的输入/输出。
它不支持正确的 telnet 协议协商,但你可能不需要它来做你正在做的事情。
【讨论】:
您可以创建一个新的 linux 用户并将他们的 shell 设置为您的脚本。
然后当他们远程登录并输入用户名/密码时,程序将运行而不是 bash 或任何默认 shell。
【讨论】: