我正在编写一个 bash 脚本,该脚本检测到互联网的连接何时断开并尝试重新连接以及在 LED 上显示状态。
我使用 netcat 命令在端口 80 上连接到 google 以确定网络连接是否处于活动状态
这一切在连接互联网时工作正常,但是,当关闭我的路由器(模拟丢失)时,netcast 命令需要大约 30 秒才能超时!
应用程序适用于 WiFi 收音机,
#!/bin/bash
sig_state=0
echo "Network Watchdog ON"
echo "0" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio0/direction
function sig_led_high
{
echo "0" > /sys/class/gpio/gpio0/value
sig_state=1
}
function sig_led_low
{
echo "1" > /sys/class/gpio/gpio0/value
sig_state=0
}
sig_led_low
while true ; do
echo "Testing nwrk..."
if nc -z -w 1 www.google.co.uk 80 > /dev/null 2>&1; then
echo "Network OK. (nwd)"
if ((sig_state)); then
sig_led_low
fi
else
if !((sig_state)); then
sig_led_high
fi
echo "Network connection down! Attempting reconnection."
ifup --force wlan0 > /dev/null 2>&1
if nc -zw1 www.google.co.uk 80 > /dev/null 2>&1; then
mpc play
fi
fi
sleep 1
done