Due to certain problems with my ISP my net often gets disconnected. As you can guess there is nothing more frustrating then trying to do something and see that your internet is not working and then manually reconnecting the network. In order to fix this i wrote a simple script to monitor my network at an interval of one minute
Command:
vi ~/monitor.shScript:
#!/bin/bashThe script pings google.com and if less then four pings are successful in five attempts(60%) then a reconnection is performed.
export DISPLAY=:0
pingout=`ping www.google.com -q -c 5 -W 2`;
pingstatus=$?;
total=`echo $pingout| grep transmitted | sed "s/.*\([[:digit:]]\) received.*/\1/"`;
if [[ $total -lt 4 || $pingstatus -ne '0' || $total -eq '' ]]
then
logger "Internet connection not working.$total/5 pings. Reconnecting..."
notify-send -i modem "Reconnecting" "$total/5 pings failed. Reconnecting..."
poff -a;
pon dsl-provider;
else
logger "Internet connection working properly"
fi
To execute it periodically every minute i just added it to cron by simply executing
crontab -e
in a terminal and adding the following line at the end of the file
* * * * * ~/monitor.sh >/dev/null 2>&1