Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
network-rescue / usr / local / lib / network-rescue / modem-reset-retry.sh
Size: Mime:
#!/usr/bin/env bash

if [ "$(id -u)" != "0" ]; then
	echo "This script must be run as 'root'"
	exit 1
fi

declare -r project_dir=/usr/local/lib/network-rescue
declare -r log_file=/var/log/network-rescue/modem-reset-state.log

TODAY=$(date +%Y%m%d)
THISHOUR=$(date +%H:%M:%S)

echo "modem-reset-retry.sh started on ${TODAY} ${THISHOUR}"

declare -r conn_type=$("${project_dir}/conn-type.sh")
if [ "${conn_type}" == "ETHERNET" ] || [ "${conn_type}" == "WLAN" ]; then
	echo "Exiting, connection type is ${conn_type}"
	exit 0
fi
echo "Connection type is ${conn_type}"

LASTSTATUS=`tail -c 1 $log_file`

rebootit() {
	CURRENTTIME=$(date +%H:%M)
	if [[ "$CURRENTTIME" > "22:00" ]] || [[ "$CURRENTTIME" < "07:00" ]]; then
		TODAY=$(date +%Y%m%d)
		THISHOUR=$(date +%H:%M:%S)
		echo "Non-working hours. Reboot."
		printf "\n$TODAY $THISHOUR:reboot-retry:0" >> $log_file
		logger Rebooting OS by modem-reset-retry.sh due to no access to Internet
		reboot
	fi
}

if [ $LASTSTATUS = '0' ]; then
	echo "Network still disconnected. Retry #1"
	printf "\n$TODAY $THISHOUR:init-retry:2" >> $log_file
	nmcli c up rnd
	sleep 300
	TODAY=$(date +%Y%m%d)
	THISHOUR=$(date +%H:%M:%S)
	if nc -zw1 google.com 443; then
		echo "Network alive"
		printf "\n$TODAY $THISHOUR:nmcli-retry:1" >> $log_file
	else
		echo "Network still disconnected. Retry #2"
		printf "\n$TODAY $THISHOUR:nmcli-retry:3" >> $log_file
		nmcli r wwan off
		sync
		sleep 5
		nmcli r wwan on
		sync
		sleep 10
		nmcli c up rnd
		sleep 300
		TODAY=$(date +%Y%m%d)
		THISHOUR=$(date +%H:%M:%S)
		if nc -zw1 google.com 443; then
			echo "Network alive"
			printf "\n$TODAY $THISHOUR:nmcli-wwan-onoff-retry:1" >> $log_file
		else
			echo "Network still disconnected. Retry #3"
			printf "\n$TODAY $THISHOUR:nmcli-wwan-onoff-retry:4" >> $log_file
			modem_dbus=`mmcli -L | grep freedesktop | cut -d'/' -f6 | awk '{print $1}'`
			if [ ! -z "$modem_dbus" ]; then
				mmcli -m $modem_dbus -r
				echo "Wait for 300 seconds..."
				sleep 300
			else
				echo No modem found using mmcli
			fi
			TODAY=$(date +%Y%m%d)
			THISHOUR=$(date +%H:%M:%S)
			if nc -zw1 google.com 443; then
				echo "Network alive"
				printf "\n$TODAY $THISHOUR:mmcli-retry:1" >> $log_file
			else
				echo "Network cannot online. End of retry. Try reboot."
				printf "\n$TODAY $THISHOUR:mmcli-retry:0" >> $log_file
				rebootit
			fi
		fi
	fi
else
	echo "Network alive"
	printf "\n$TODAY $THISHOUR:init-retry:1" >> $log_file
fi