On Fri, 3 Jun 2016 00:26:12 +0800 Ray Lai <r...@raylai.com> 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