Restore a Broken Wireless Connection with a Simple Bash Script

Dmitri Popov

Productivity Sauce

Jul 27, 2015 GMT
Dmitri Popov

Linking a Linux server to the network via a Wi-Fi connection is not the most reliable option, but in some situations it is the most convenient one. So if you choose to use the Wi-Fi connection, it's prudent to have a tool that monitors the connection and restarts the Wi-Fi interface if the connection is broken. And the following simple Bash shell script can do just that.

#!/bin/sh
ping -c5 192.168.1.1 > /dev/null
if [ $? -ne 0 ]; then
    sudo ifdown --force wlan0
    sudo ifup wlan0
fi

The script pings the router on the local network (replace 192.168.1.1 with the actual IP address of the router), and restarts the wireless network interface if the ping fails. To make sure that the script handles the correct interface, run the ifconfig command and replace the wlan0 string in the script with the correct interface name. Save the script in the home directory under the wlan-reset.sh name and make it executable using the chmod +x wlan-reset.sh command. To run the script at regular intervals, run the crontab -e command and add the following cron job:

@hourly /home/pi/wlan-reset.sh

This job will run the script every hour, but you can adjust it to whatever interval you want.

comments powered by Disqus