]> git.donarmstrong.com Git - bin.git/blob - cycle_wireless
* update cycle_wireless command
[bin.git] / cycle_wireless
1 #!/bin/sh
2
3 NETWORK="$1"
4 WIRELESS="$2"
5
6 if [ -z "$NETWORK" ]; then
7         NETWORK="homewlan";
8 fi;
9
10 if [ -z "$WIRELESS" ]; then
11         WIRELESS="wireless";
12 fi;
13
14 # First try a minor cycle
15
16 ESSID=$(/sbin/iwconfig "$WIRELESS" 2>/dev/null |grep ESSID |perl -ne 'm/\"([^\"]+)\"/ && print $1,qq(\n)')
17
18 if [ -n "$ESSID" ]; then
19     sudo iwconfig "$WIRELESS" essid "$ESSID"
20     sleep 1s;
21     if /sbin/iwconfig "$WIRELESS" 2>/dev/null | grep 'Bit Rate'|grep -qv '=1 Mb/s'; then
22         exit 0
23     fi;
24 fi;
25
26 # Failure, so major cycle
27 sudo ifdown wireless;
28 if [ "$WIRELESS" == "wireless" ]; then
29     if lsmod|grep -q bcm43xx; then
30         sudo modprobe -r bcm43xx;
31         sudo modprobe bcm43xx;
32     else
33         sudo modprobe -r b43;
34         sudo modprobe b43;
35     fi;
36     sleep 2s;
37 fi;
38 sudo ifup "wireless=${NETWORK}";