diff --git a/modem-restart b/modem-restart index 422ca54..13e73ac 100755 --- a/modem-restart +++ b/modem-restart @@ -18,7 +18,28 @@ is_data_available() return 0 } +connectivity() +{ + if nmcli c show --active | grep wlan0; then + return 0 + fi + + if [ $COUNTER -ge 10 ]; then + COUNTER=0 + if ping -q -W5 -c1 -s0 libredns.gr; then + return 0 + else + + return 1 + fi + fi + + COUNTER=$((COUNTER + 1)) + return 0 +} + TRY=0 +COUNTER=0 while :; do if ! is_modem_available ; then TRY=$((TRY + 1)) @@ -30,8 +51,14 @@ while :; do TRY=0 elif ! is_data_available; then echo $(date): Restarting mobile data - systemd-inhibit --what=sleep --why="Restart mobile data" sleep 5 + nmcli c down internet nmcli c up internet + systemd-inhibit --what=sleep --why="Restart mobile data" sleep 5 + elif ! connectivity; then + echo $(date): Connectivity test failed. Restaring modem... + systemctl restart eg25-manager + systemd-inhibit --what=sleep --why="modem reset" sleep 60 + TRY=$((TRY + 1)) fi sleep 5