Linux.netcat + 庆典

标签 linux bash netcat

我有一个 bash 脚本:

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

我希望聆听始终有效。

nc localhost 30003 # 工作正常 输入一些东西 Ctrl+C

再试一次 nc localhost 30003 # 不工作

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

我该如何解决?

  • 另外,我在 python 脚本中定义了很多函数,所以我不想从头开始运行它。可能吗?

谢谢。

最佳答案

问题是 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。

希望这对您有所帮助。

关于Linux.netcat + 庆典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41472244/

相关文章:

linux - 如何在用户模式 ​​NUMA 感知内存分配器中实现交错页面分配?

linux - 应该为每个应用程序进行 FIPS 自测试吗?

c - 调试远程 C 应用程序

linux - 如何读取strace日志中的error62?

c++ - Ubuntu System Monitor 和 valgrind 发现 C++ 应用程序中的内存泄漏

linux - 检查终端输出是否与我的字符串匹配

bash - 如何计算 Bash 中二进制文件的字节数?

bash - rm !(文件名)在 ubuntu 中不起作用,它显示错误 "bash: !: event not found"

linux - 使用端口转发收听对话

c - 将stdin流式传输到套接字