diff --git a/WiFi_Check b/WiFi_Check index 9de6f91..641ca3a 100644 --- a/WiFi_Check +++ b/WiFi_Check @@ -5,6 +5,9 @@ # Title: WiFi_Check # Author: Kevin Reed (Dweeber) # dweeber.dweebs@gmail.com +# Enhanced by: +# Youp Mol +# wifi_check @ youp.nospam.net # Project: Raspberry Pi Stuff # # Copyright: Copyright (c) 2012 Kevin Reed @@ -18,6 +21,9 @@ # Uses a lock file which prevents the script from running more # than one at a time. If lockfile is old, it removes it # +# Enhancements added: +# IPv6 capability, static configuration support, silent-mode, switching off wired interface +# # Instructions: # # o Install where you want to run it from like /usr/local/bin @@ -28,7 +34,7 @@ # this is a very common problem. If once a min change */5 to * # once every 2 mins */5 to */2 ... # -# */5 * * * * /usr/local/bin/WiFi_Check +# */5 * * * * /usr/local/bin/WiFi_Check silent # ################################################################## # Settings @@ -36,51 +42,87 @@ lockfile='/var/run/WiFi_Check.pid' # Which Interface do you want to check/fix wlan='wlan0' +wired='eth0' ################################################################## -echo -echo "Starting WiFi check for $wlan" -date -echo +$silent || echo -n "Starting WiFi check for $wlan" # Check to see if there is a lock file if [ -e $lockfile ]; then - # A lockfile exists... Lets check to see if it is still valid - pid=`cat $lockfile` - if kill -0 &>1 > /dev/null $pid; then - # Still Valid... lets let it be... - #echo "Process still running, Lockfile valid" - exit 1 - else - # Old Lockfile, Remove it - #echo "Old lockfile, Removing Lockfile" - rm $lockfile - fi + # A lockfile exists... Lets check to see if it is still valid + pid=`cat $lockfile` + if kill -0 &>1 > /dev/null $pid; then + # Still Valid... lets let it be... + #echo "Process still running, Lockfile valid" + $silent || echo -n . + exit 1 + else + # Old Lockfile, Remove it + #echo "Old lockfile, Removing Lockfile" + $silent || echo -n . + rm $lockfile + sleep .5 + fi +else + $silent || echo -n . fi # If we get here, set a lock file using our current PID# #echo "Setting Lockfile" +$silent || echo -n . echo $$ > $lockfile # We can perform check -echo "Performing Network check for $wlan" -if ifconfig $wlan | grep -q "inet addr:" ; then - echo "Network is Okay" +#echo "Performing Network check for $wlan" +if iwconfig $wlan|grep -qe "ESSID:\".*\""; then + #echo ESSID found + $silent || echo -n . + if ifconfig $wlan | grep -q "inet addr:" ; then + #echo "Network is Okay" + $silent || echo . OK + logger Wifi connection on $wlan is OK + ifdown $wired 2&>1 > /dev/null + elif ifconfig $wlan | grep -q "inet6 addr:" ; then + #echo "Network \(IPv6 only\) is Okay" + $silent || echo . OK + logger Wifi connection on $wlan \(IPv6 only\) is OK + ifdown $wired 2&>1 > /dev/null + else + $silent || echo "Network connection down! Attempting reconnection." + logger Wifi connection on $wlan is DOWN, trying to reconnect... + date + ifdown $wlan + sleep 5 + ifup --force $wlan + if ifconfig $wlan | grep -q "inet addr:" ; then + logger Wifi connection on $wlan seems to be up and running again. + ifdown $wired 2&>1 > /dev/null + else + logger Wifi connection on $wlan is DOWN, enabling the wired connection... + ifup $wired 2&>1 > /dev/null + fi + fi else - echo "Network connection down! Attempting reconnection." - ifdown $wlan - sleep 5 - ifup --force $wlan - ifconfig $wlan | grep "inet addr" + $silent || echo "Network connection down! Attempting reconnection." + logger Wifi connection on $wlan is DOWN, trying to reconnect... + date + ifdown $wlan + sleep 5 + ifup --force $wlan + if ifconfig $wlan | grep -q "inet addr:" ; then + logger Wifi connection on $wlan seems to be up and running again. + ifdown $wired 2&>1 > /dev/null + else + logger Wifi connection on $wlan is DOWN, enabling the wired connection... + ifup $wired 2&>1 > /dev/null + fi fi -echo -echo "Current Setting:" -ifconfig $wlan | grep "inet addr:" -echo +$silent || echo -n "Current Setting:" +$silent || iwconfig $wlan | grep -zoe "ESSID:\".*\""|xargs echo -e|tr -d \\n\\t;ifconfig $wlan | grep -oe "addr:[a-zA-Z0-9.:]*" + # Check is complete, Remove Lock file and exit #echo "process is complete, removing lockfile" rm $lockfile -exit 0 ################################################################## # End of Script