0

我正在编写一个 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
4

0 回答 0