tylen ea4dea8617 router: correct a bug in the script
- 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.
2025-07-08 22:40:32 +03:00

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