-
-
Save renakim/97f97d25181e1bf5cf1d6900b5d431a9 to your computer and use it in GitHub Desktop.
Script to check and re-connect WiFi on Raspberry Pi
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
################################################################## | |
# A Project of TNET Services, Inc | |
# | |
# Title: WiFi_Check | |
# Author: Kevin Reed (Dweeber) | |
# [email protected] | |
# Project: Raspberry Pi Stuff | |
# | |
# Copyright: Copyright (c) 2012 Kevin Reed <[email protected]> | |
# https://github.com/dweeber/WiFi_Check | |
# | |
# Purpose: | |
# | |
# Script checks to see if WiFi has a network IP and if not | |
# restart WiFi | |
# | |
# Uses a lock file which prevents the script from running more | |
# than one at a time. If lockfile is old, it removes it | |
# | |
# Instructions: | |
# | |
# o Install where you want to run it from like /usr/local/bin | |
# o chmod 0755 /usr/local/bin/WiFi_Check | |
# o Add to crontab | |
# | |
# Run Every 5 mins - Seems like ever min is over kill unless | |
# 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 | |
# | |
################################################################## | |
# Settings | |
# Where and what you want to call the Lockfile | |
lockfile='/var/run/WiFi_Check.pid' | |
# Which Interface do you want to check/fix | |
wlan='wlan0' | |
pingip='192.168.1.1' | |
################################################################## | |
echo | |
echo "Starting WiFi check for $wlan" | |
date | |
echo | |
# 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 | |
fi | |
# If we get here, set a lock file using our current PID# | |
#echo "Setting Lockfile" | |
echo $$ > $lockfile | |
# We can perform check | |
echo "Performing Network check for $wlan" | |
/bin/ping -c 2 -I $wlan $pingip > /dev/null 2> /dev/null | |
if [ $? -ge 1 ] ; then | |
echo "Network connection down! Attempting reconnection." | |
/sbin/ifdown $wlan | |
/bin/sleep 5 | |
/sbin/ifup --force $wlan | |
else | |
echo "Network is Okay" | |
fi | |
echo | |
echo "Current Setting:" | |
/sbin/ifconfig $wlan | grep "inet addr:" | |
echo | |
# Check is complete, Remove Lock file and exit | |
#echo "process is complete, removing lockfile" | |
rm $lockfile | |
exit 0 | |
################################################################## | |
# End of Script | |
################################################################## |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment