我有一个 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/