- Corrected the service restart commands to use the proper syntax for stopping and starting the WAN interface. - Improved the ping test logic to return success or failure directly, simplifying the main script execution. - Enhanced error logging by redirecting standard error output to the log file during the ping test. - Streamlined the ping command to use the configured PING_HOST variable directly. - Ensured that the script properly handles return values from the ping test function. These changes improve the reliability and clarity of the WAN monitoring functionality.
53 lines
1.3 KiB
Bash
53 lines
1.3 KiB
Bash
#!/bin/sh
|
|
|
|
# Configuration
|
|
PING_HOST="1.1.1.1"
|
|
PING_WAIT=2
|
|
MAX_TRIES=4
|
|
|
|
# Function to log messages
|
|
wan_monitor() {
|
|
echo "WAN Monitor: $@" | /usr/bin/logger -s
|
|
}
|
|
|
|
# Function to restart the WAN interface
|
|
restart_wan_interface() {
|
|
wan_monitor "Force restarting WAN interface now..."
|
|
service "restart_wan_if 0" # Bring down the interface
|
|
sleep 10 # Wait for 10 seconds
|
|
service "restart_wan_if 1" # Bring up the interface
|
|
wan_monitor "WAN interface is restarted."
|
|
}
|
|
|
|
# Function to perform a ping test
|
|
ping_test() {
|
|
local count_tries=0
|
|
local ping_test_passed=0
|
|
wan_monitor "Running ping test..."
|
|
|
|
while [ $count_tries -lt $MAX_TRIES ]; do
|
|
if /bin/ping -c 1 -W $PING_WAIT $PING_HOST >/tmp/wan_check.log 2>&1; then
|
|
ping_test_passed=1
|
|
wan_monitor "Ping test succeeded within $PING_WAIT secs."
|
|
return 0 # Return success
|
|
else
|
|
sleep 1
|
|
count_tries=$((count_tries + 1))
|
|
wan_monitor "Ping failed [$count_tries]"
|
|
fi
|
|
done
|
|
|
|
return 1 # Return failure
|
|
}
|
|
|
|
# Main script execution
|
|
if ping_test; then
|
|
wan_monitor "Internet was reachable. No need to restart WAN."
|
|
else
|
|
wan_monitor "Pings failed. Internet must be down."
|
|
restart_wan_interface
|
|
fi
|
|
|
|
|
|
|