CentOS Wireless: Fix when it breaks!
Hi All – if you have ditched NetworkManager (as I have) and you are still running into wireless LAN access problems…check out this script!
I am in quite a rush so no time to explain the script…but check out the commands (and the order of the commands) and Enjoy 🙂
You must already have wpa_supplicant
configured properly for these commands to work.
#!/bin/bash
# 20150217, ABr: Updated to have extensive additional code for wireless update
l_process=1
if ip a show wlan0 | grep --quiet -e "inet [0-9]\+\." 2>/dev/null; then
echo "Looks like you already have a wireless IP. Is there a problem?"
l_process=0
fi
l_fixed=1
if [ $l_process -eq 1 ]; then
l_fixed=0
# first, bring everything down
sudo service network stop
# next, unblock wifi
sudo rfkill unblock wifi
# bring up the network
sudo service network start
# do we have an IP?
if ip a show wlan0 | grep --quiet -e "inet [0-9]\+\." 2>/dev/null; then
echo "Wireless IP network found; we win."
l_fixed=1
else
echo "No IP network found, bouncing wifi..."
sudo ifdown wlan0
# wait to give wifi time to initialize
sleep 3
sudo ifup wlan0
# final check
if ip a | grep --quiet -e "inet 192" 2>/dev/null; then
echo "IP network found; victory!"
l_fixed=1
else
echo "IP network not created, going for Round 2."
fi
fi
fi
if [ $l_fixed -eq 0 ]; then
echo "So the wireless thinks it won't work, eh?"
echo "Time for the heavy artillery."
echo "Firing all salvos!"
echo " Stop the network (again)..."
service network stop >/dev/null 2>&1
echo " Killing all wpa_supplicant instances..."
l_wpas=$(ps -efa | grep wpa | grep -v grep | sed -e 's# \+# #g' | cut -d' ' -f 2)
for i in $l_wpas; do
kill -9 $i
done
echo " Starting the network..."
service network start >/dev/null 2>&1
echo " Force wireless down..."
ifdown wlan0
echo " Unblock wireless..."
rfkill unblock all
echo " Forcing the wireless card up..."
ifconfig wlan0 up
echo " Forcing wpa_supplicant to start..."
wpa_supplicant -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf -Dwext &
echo " Forcing IP address..."
ifup wlan0
if ip a | grep --quiet -e "inet 192" 2>/dev/null; then
echo "IP network found; victory!"
else
echo "No IP network, track down Andy again."
fi
fi
Enjoy!
Leave a Reply