On Fri, 3 Jun 2016 00:26:12 +0800
Ray Lai <[email protected]> wrote:
> Hi all,
>
> I got tired of configuring my wifi every time I had to move my laptop.
> Here's a script a whipped up. It scans the wifi for known networks and
> writes the strongest one to /etc/hostname.if. Then it runs netstart.
> Easy to use, simple config file, no arguments needed, perfect
> for /etc/apm/resume.
>
> Oh, and it uses pledge for good measure.
>
> I hope this is helpful!
Hi and thanks,
please let me share my modifications for wifi handling, too.
This patch to /etc/netstart [0] cycles through different configurations
in hostname.if [1] until the link status becomes "active".
It's not bulletproof nor as fast as it could be...
Greetings Ben
[0] diff -u /etc/netstart.orig /etc/netstart
--- /etc/netstart.orig Fri Jun 3 23:09:40 2016
+++ /etc/netstart Sat Jun 4 11:05:03 2016
@@ -40,6 +40,8 @@
fi
# Check for ifconfig'able interface.
(ifconfig $if || ifconfig $if create) >/dev/null 2>&1 || return
+ # Check for wifi, so we can treat it special
+ [ "$(ifconfig $if | grep groups:.*wlan)" ] && wifi=yes
# Now parse the hostname.* file.
while :; do
@@ -66,6 +68,11 @@
"!"*) # Parse commands.
cmd="${af#*!} ${name} ${mask} ${bcaddr} ${ext1} ${ext2}"
;;
+ "TRYNEXT")
+ [ "$wifi" ] && wifi=checkactive || continue
+ [ "$name" = "NONE" ] && checkdelay="" ||
checkdelay="$name"
+ cmd=
+ ;;
"dhcp")
[ "$name" = "NONE" ] && name=
[ "$mask" = "NONE" ] && mask=
@@ -127,6 +134,13 @@
;;
esac
eval "$cmd"
+ if [ "X$wifi" = "Xcheckactive" ]
+ then
+ # delay to let the status catch up
+ [ "$checkdelay" ] && sleep $checkdelay || sleep 1
+ [ "$(ifconfig $if | grep status:.*active)" ] && break
+ wifi=retry
+ fi
done </etc/hostname.$if
}
[1] cat /etc/hostname.iwn0
nwid APhop1 nwkey 0x1234567890abcdefabcdef1234
inet 192.168.1.10 255.255.255.0
up
TRYNEXT 10
nwid APhop2 nwkey 0x1234567890abcdefabcdef1234
dhcp
TRYNEXT
nwid APhop3 nwkey 0x1234567890abcdefabcdef1234
dhcp