#!/bin/bash ########################################################################### ## Copyright (C) Wizardry and Steamworks 2018 - License: GNU GPLv3 ## ## Please see: http://www.gnu.org/licenses/gpl.html for legal details, ## ## rights of fair usage, the disclaimer and warranty conditions. ## ########################################################################### ########################################################################### ## CONFIGURATION ## ########################################################################### # An array of wireless interfaces. IFACE_DEVICE=( wlan0 ) ########################################################################### ## INTERNALS ## ########################################################################### # Acquire a lock. LOCK_FILE='/var/lock/wifi-reconnect' if mkdir $LOCK_FILE 2>&1 >/dev/null; then trap '{ rm -rf $LOCK_FILE; }' KILL QUIT TERM EXIT INT HUP else exit 0 fi for i in ${!IFACE_DEVICE[*]}; do INTERFACE_ADDRESS=`ifconfig ${IFACE_DEVICE[$i]} | grep 'inet' | egrep -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | head -n 1` if [ -z "$INTERFACE_ADDRESS" ]; then # The interface does not have an IP address. ifdown ${IFACE_DEVICE[$i]} if [ -z $WPA_RESTART ]; then killall -9 wpa_supplicant WPA_RESTART=1 fi sleep 5 ifup --force ${IFACE_DEVICE[$i]} fi # DEBUG #echo $INTERFACE_ADDRESS done