Is /etc/rc.conf scriptable?
Paul Schenkeveld
freebsd at psconsult.nl
Tue Feb 1 12:57:17 UTC 2011
On Tue, Feb 01, 2011 at 08:35:06PM +0800, Yue Wu wrote:
> Hi list,
>
> I'm trying to do something to make rc.conf can act conditionally
>
> What I want is:
>
> 1. List the wireless access points,
>
> grep if there is one which bssid is 'bb:bb:bb:bb:bb:bb',
>
> if there is, then set ifconfig_wlan0 to the value:
>
> "inet 192.168.1.111 netmask 255.255.255.0 WPA"
>
> 2. check if bitlbee has been installed, if so, then let bitlbee
> service start.
>
>
> So I tried with following settings in rc.conf, but all of them failed,
> i.e., the networking can't be connected and bitlbee service doesn't
> run.
>
> /etc/rc.conf
>
> if ifconfig wlan0 list scan 2>/dev/null | grep -q 'bb:bb:bb:bb:bb:bb' >/dev/null 2>&1; then
> ifconfig_wlan0="inet 192.168.1.111 netmask 255.255.255.0 WPA"
> fi
> if [ -x /usr/local/sbin/bitlbee ]; then
> bitlbee_enable="YES"
> fi
/etc/rc.conf is scriptable (unless you are also using a dashboard or
other software that wants to interpret/update /etc/rc.conf).
Your problem here is that rc.conf is read (and executed) before wlan0
gets created. After creation of an interface, /etc/start_if.<interface>
is called, perhaps you could use that but keep in mind it's run just
after creation of the interface so if you use it for wlan0 and need the
output of a station scan you should use ifconfig wlan0 scan instead of
ifconfig wlan0 list scan. This may take some time during which your
boot process is stalled.
> My question is, how to achieve what I want? The simpler, the better :)
Otherwise, perhaps devd could help you to run your script asynchronously
after wlan0 is created.
Regards,
Paul Schenkeveld
More information about the freebsd-stable
mailing list