我不明白如何在以太网连接不稳定的两台主机之间正确设置数据传输。
这是我的/simple/bash/script.sh
#!/bin/bash
while [ true ]; do
cat /dev/virtual | nc -v 192.168.1.1 5005 || echo "nc failed" && exit
sleep 5s
done
exit
如果我手动启动它并且在目的地netcat
没有运行它会说:
5005 (tcp) failed: Connection refused
但它不会退出。
我需要以另一种方式:
- 检查
netcat
连接是否正常。 - 然后管道
cat /dev/virtual
。
有没有办法捕获netcat
状态,然后failed: connection refused
重新启动主 bash 脚本?
答案1
这应该有效:
#!/bin/bash
if ! nc -z 192.168.1.1 5005 ; then
sleep 1 && "$0" & exit;
fi
nc -v 192.168.56.203 5005 < /dev/virtual
解释:
nc -z
会检查对方是否有人在听- 如果没有人在听,程序将休眠 1 秒(显然你可以更改它),然后它将启动自身的另一个实例并退出
- 如果有人正在听,那么程序将发送
/dev/virtual