#!/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