Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # Script to check if internet is reachable and if not reset BELL modem
- # DATE=$(date +'%d/%m/%Y %H:%M:%S')
- # echo "********** $DATE WIRELESS CHECK STARTED **********"
- # if script already running -> exit
- if [ -f /home/se/checking-internet ]; then
- # echo "Script already running. Exiting now..."
- exit
- fi
- # Create lockfile
- touch /home/se/checking-internet
- # Check if Ipadress has changed
- ipcheck () {
- curr_ip=$(curl --silent --max-time 5 http://ipecho.net/plain)
- # If curl was successfull compare old ip with current ip
- if [ $? -eq 0 ] && [ ! -z "$curr_ip" ]; then
- #echo "Current IP is: $curr_ip"
- old_ip=`cat /home/se/ipaddress`
- #echo "Old IP was: $old_ip"
- # If Ip differs write log
- if [ "$old_ip" != "$curr_ip" ]; then
- change_date=$(date +'%d/%m/%Y %H:%M:%S')
- echo "$change_date: Adress has changed from $old_ip to $curr_ip \n\n"
- # Write new IP into file
- echo "$curr_ip" > /home/se/ipaddress
- fi
- # If curl fail, just ignore
- else
- change_date=$(date +'%d/%m/%Y %H:%M:%S')
- # echo "$change_date: Could not determine external IP. Ignored.\n\n"
- fi
- }
- # Check if internet is reachable
- start_time=`date +%s`
- a=0
- reachable=0
- # Try 3 times for max. 20min each to see if internet works.
- # Multiple times prevents modem reboot due to temporary DNS errors
- # If Bell transiently block internet access the we have up to 1h patience
- while [ $a -lt 3 ]; do
- curl --silent --show-error --max-time 3 --retry 9 --retry-max-time 600 --head www.google.ca >/dev/null
- if [ $? -eq 0 ];then
- reachable=1
- break
- else
- a=`expr $a + 1`
- sleep 10
- fi
- done
- # Computing runtime
- end_time=`date +%s`
- run_time=$((end_time-start_time))
- run_min=`date -u -d @${run_time} +"%T"`
- # If reachable during the course of all curl retries
- if [ $reachable -eq 1 ]; then
- # If internet reachable within a minute: check ip and exit (normal case)
- if [ $run_time -le 60 ]; then
- # echo "Internet running fine. Checking if IP has changed."
- ipcheck
- rm /home/se/checking-internet
- exit
- # If internet is reachable after some tries, echo to log
- else
- echo "Internet was not reachable for $run_min (h:m:s)"
- reach_time=$(date +'%d.%m.%Y %H:%M:%S')
- echo "Since $reach_time internet is reachable again.\n\n"
- # Check if IP has changed
- ipcheck
- rm /home/se/checking-internet
- exit
- fi
- fi
- # If not reachable check if router is reachable
- change_date=$(date +'%d/%m/%Y %H:%M:%S')
- echo "$change_date: Internet not reachable since $run_min (h:m:s). Pinging router..."
- ping -c 3 -W 10 192.168.12.1 >/dev/null
- # If not reachable - reset wlan connection
- if [ $? -ne 0 ]; then
- echo 'Router not reachable. Reseting wireless.'
- service network-manager restart
- sleep 5
- echo "Exiting..."
- rm /home/se/checking-internet
- exit
- # if router is reachable, modem must be crashed
- else
- echo "Router is reachable. Taking modem down"
- curl --silent --user admin:admin -d "action=submit&page=resets&factory_reset=reboot" 192.168.2.1
- echo "Modem rebooting. Waiting 5min..."
- sleep 300
- echo "Exiting...\n\n"
- rm /home/se/checking-internet
- exit
- fi
Advertisement
Add Comment
Please, Sign In to add comment