我的想法是制作一个 netcat 服务器,当您连接到它时,服务器会运行一个用户可以与之交互的 python 脚本。例如,脚本要求输入一个数字,然后它输出该数字的 3 次方。如何才能做到这一点?如何运行程序并将输出重定向到连接的用户并使他们能够实时与其交互?
伪输出:
$ nc 192.168.1.13
Input a number: 2
8
(end)
剧本:
print(str(int(input("Input a number: "))**3))
答案1
socat TCP-LISTEN:50011,fork EXEC:'/path/to/script',stderr,pty,echo=0
笔记:
50011
是监听端口,可以选择自己的。稍后连接到它,例如nc 127.0.0.1 50011
。fork
允许socat
为许多客户提供服务(也可以同时)。- 如果没有,只有在您实际盲目地提供输入后才能
pty
获得是正常的。Input a number:
- 我的测试表明,如果
socat
以Ctrl+终止C,则该端口可能会继续使用一段时间。如果这是一个问题,请考虑reuseaddr
(即TCP-LISTEN:50011,fork,reuseaddr
)。