#!/bin/bash
gateway='192.168.0.1'
lockfile='/var/run/chk-wifi.pid'
wlan='wlan0'
if [ -e $lockfile ]; then
echo `date +%F\ %T\ `$0": A lockfile exists... Lets check to see if it is still valid"
pid=`cat $lockfile`
if kill -0 &>1 > /dev/null $pid; then
echo `date +%F\ %T\ `$0": Process still running, Lockfile valid."
exit 1
else
echo `date +%F\ %T\ `$0": Invalid Lockfile, Removing."
rm $lockfile
fi
fi
#echo `date +%F\ %T\ `$0": Setting Lockfile"
echo $$ > $lockfile
#echo `date +%F\ %T\ `$0": Performing network check for $wlan"
ping -c2 $gateway 2>&1
rc=$?
if [[ $rc -eq 0 ]] ; then
echo `date +%F\ %T\ `$0": The network is up."
else
echo `date +%F\ %T\ `$0": Network down! Attempting reconnection."
ifdown $wlan
# echo `date +%F\ %T\ `$0": Cycling rpi3 onboard wifi driver"
rmmod brcmfmac
sleep 2
# echo `date +%F\ %T\ `$0": Most probable cause in rpi1-2 is USB jamming, cycling the power on USB"
# echo 0 > /sys/devices/platform/soc/20980000.usb/buspower
# sleep 2
# echo 1 > /sys/devices/platform/soc/20980000.usb/buspower
# sleep 1
# echo `date +%F\ %T\ `$0": Bringing back the WiFi"
modprobe brcmfmac
ifup --force $wlan
# sleep 1
# echo `date +%F\ %T\ `$0": New IP: $(ifconfig $wlan | grep 'inet addr')"
# echo `date +%F\ %T\ `$0": "$(hostname -I)
fi
#echo `date +%F\ %T\ `$0": Remove lock & exit"
rm $lockfile
exit 0