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
# 不工作
所以,在套接字第一次关闭后,它再也不会打开了..
我该如何解决?
- 此外,我在 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.
希望对您有所帮助。
我有一个 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.
希望对您有所帮助。