Linux。网络猫 + bash

Linux. netcat + bash

我有一个 bash 脚本:

#!/bin/bash
while :
    do
        nc -l -p 30003 | python3 script.py 
    done

我希望聆听一直有效。

nc localhost 30003 # 工作正常 输入内容 Ctrl+C

再试一次nc localhost 30003 # 不工作

所以,在套接字第一次关闭后,它再也不会打开了..

我该如何解决?

谢谢。

问题是 nc -l -p 30003 在 python3 script.py 完成之前不再 运行。 Ctrl+C nc localhost 30003 后没有监听nc 连接。如果将 python3 script.py 替换为 cat,nc 服务器将重新启动。所以简单的解决方案是 script.py 退出。

我假设您有一个要保存的状态。一种可能性是将状态(变量等)保存为 JSON 的文件。另一种方法是让 nc 将输出写入文件,然后 script.py 从该文件中读取。

如果你有时间,想学习一些网络知识,我建议看看 python socket API。你可以让 script.py 充当服务器并直接从连接端点读取数据,而不是通过 nc.

希望对您有所帮助。