如何通过 telnet 运行 Python 程序?
如何运行 Python 程序,以便它输出其 STDOUT 并将其 STDIN 输入到远程 telnet 客户端/从远程 telnet 客户端输入其 STDIN?
程序所做的就是打印出文本,然后重复等待 raw_input()。我希望远程用户无需 shell 访问即可使用它。它可以是单线程/单用户。
How can I run a Python program so it outputs its STDOUT and inputs its STDIN to/from a remote telnet client?
All the program does is print out text then wait for raw_input(), repeatedly. I want a remote user to use it without needing shell access. It can be single threaded/single user.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在 Unix 系统上,您可以使用 inetd 来实现此目的。它将负责为您打开网络连接,因此您的程序将按原样运行。
On a Unix system, you can use inetd for this. It will take care of opening the network connection for you, so your program will work as-is.
将 Python 脚本放入该用户的 shell 中。 (或者如果这不起作用,请将其包装在 bash 脚本甚至可执行文件中)。
(您可能必须将其放入 /etc/shells (或同等内容)中)
Make the Python script into the shell for that user. (Or if that doesn't work, wrap it up in bash script or even a executable).
(You might have to put it in /etc/shells (or equiv.))
如果您不需要完整的 telnet 功能,则可以仅使用套接字。
查看标准 python 库中的 Socket Server 模块。
它将使您能够轻松编写一个程序来侦听端口的输入/输出。
它不支持正确的 telnet 协议协商,但您可能不需要它来完成您正在做的事情。
If you don't need full telnet functionality, you can just use a socket.
Check out the Socket Server module in the standard python library.
It'll enable you to easily write a program that'll listen on a port for input/output.
It won't support the proper telnet protocol negotiation, but you might not need that for what you're doing.
您只需创建一个新的 linux 用户并将其 shell 设置为您的脚本即可。
然后,当他们远程登录并输入用户名/密码时,程序将运行,而不是 bash 或任何默认 shell。
You can just create a new linux user and set their shell to your script.
Then when they telnet in and enter the username/password, the program runs instead of bash or whatever the default shell is.