#! /bin/sh is_modem_available() { if [ -z "$(lsusb | grep "2c7c:0125")" ]; then return 1 fi return 0 } is_data_available() { if ! nmcli c show --active | grep -e internet -e gsm > /dev/null; then return 1 fi return 0 } TRY=0 while :; do if ! is_modem_available ; then TRY=$((TRY + 1)) echo $(date) Restarting modem, $TRY try systemctl restart eg25-manager systemd-inhibit --what=sleep --why="Modem reset" sleep 60 elif [ $TRY -ne 0 ]; then echo $(date): Modem restarted successfully TRY=0 elif ! is_data_available; then echo $(date): Restarting mobile data nmcli c up internet systemd-inhibit --what=sleep --why="Restart mobile data" sleep 5 fi sleep 30 done