[blfs-dev] [lfs-patches] [patches] -- /lib/services/wpa_supplicant

Armin K. krejzi at email.com
Sun Feb 3 18:41:55 PST 2013


On 02/03/2013 06:26 PM, Ivan Kovnatsky wrote:
> On Feb 03, 2013 at 17:14, "Armin K." <krejzi at email.com> wrote:
>> On 02/03/2013 02:52 PM, Ivan Kovnatsky wrote:
>>> Hello you guys!
>>>
>>> I have successfully found init.d/bluetooth script, which obvious not needed
>>> to me.  But wpa_supplicant is pretty nice one to have.
>>>
>>> I did a little patch to put that into blfs startup scripts.  Please see if it
>>> meats a purpose.
>>>
>>> Thanks.
>>> -Ivan
>>>
>>>
>>>
>>
>> Hello and thanks for taking time to write this.
>>
>> I do not like it though, because it is tied to one interface and one
>> configuration file.
>>
>> wpa_supplicant should be added as a service (like dhclient, dhcpcd,
>> wireless) and it should be allowed to be configured via
>> /etc/sysconfig/ifup.wlan0 or whatever it's correct.
>
> I did service-like script, which looks pretty much nicer by arch of
> implementing services through init.d/network.
>
> -Ivan
>

I didn't notice first time that I responded to your mail. Forwarding to 
blfs-dev.

I don't like your script since it is tied to one config file and it is 
basically a rewrite of ipv4 script. I've taken some time to write a 
script of my own. It's in attachment

Place it as /lib/services/wpa, generate wpa configuration file for, eg, 
wlan0 by running wpa_passphrase YourSSID YourSSIDPSK > 
/etc/sysconfig/wpa_supplicant-wlan0.conf and if using dhcp (isc dhcp - 
dhclient service), create /etc/sysconfig/ifconfig.wlan0 with the following:

ONBOOT="yes"
IFACE="wlan0"
SERVICE="wpa"
WPA_SERVICE="dhclient"
DHCP_START=""
DHCP_STOP=""

# Set PRINTIP="yes" to have the script print
# the DHCP assigned IP address
PRINTIP="no"

# Set PRINTALL="yes" to print the DHCP assigned values for
# IP, SM, DG, and 1st NS. This requires PRINTIP="yes".
PRINTALL="no"

Same should work for static-ipv4, just change WPA_SERVICE to whatever is 
apropriate and add the rest like it would be.

Any feedback is welcome.
-------------- next part --------------
#!/bin/bash
# Begin services/wpa

# Origianlly based upon lfs-bootscripts-1.12 $NETWORK_DEVICES/if{down,up}
# Written by Armin K. <krejzi at email dot com>

# Call with: IFCONFIG=<filename> /lib/services/wpa <IFACE> <up | down>

#$LastChangedBy: krejzi $
#$Date: 2012-08-14 22:00:47 +0000 (Tue, 14 Aug 2012) $

. /lib/lsb/init-functions
. $IFCONFIG

# Make compatible with older versions of init-functions
unset is_true

is_true()
{
   [ "$1" = "1" ] || [ "$1" = "yes" ] || [ "$1" = "true" ] ||
   [ "$1" = "y" ] || [ "$1" = "t" ]
}

case "$2" in
   up)
      log_info_msg "\nStarting wpa_supplicant on the $1 interface..."

      mkdir -p /run/wpa_supplicant

      if [ ! -e /etc/sysconfig/wpa_supplicant-$1.conf ]; then
        log_info_msg "\nwpa_supplicant configuration file not present"
        log_failure_msg2
        exit 1
      fi

      /sbin/wpa_supplicant -q -B -Dnl80211,wext -P/run/wpa_supplicant/$1.pid -C/run/wpa_supplicant -c/etc/sysconfig/wpa_supplicant-$1.conf -i$1

      if [ "$?" != "0" ]; then
        log_failure_msg2
        exit 1
      fi

      log_success_msg2

      if [ -n "${WPA_SERVICE}" ]; then
         if [ ! -e /lib/services/${WPA_SERVICE} -a ! -x /lib/services/${WPA_SERVICE} ]; then
            log_info_msg "\nCannot start ${WPA_SERVICE} on $1"
            log_failure_msg2
            exit 1
         fi

         IFCONFIG=${IFCONFIG} /lib/services/${WPA_SERVICE} $1 up
         evaluate_retval
      fi
   ;;

   down)
      if [ -n "${WPA_SERVICE}" ]; then
         if [ ! -e /lib/services/${WPA_SERVICE} -a ! -x /lib/services/${WPA_SERVICE} ]; then
            log_info_msg "\nCannot stop ${WPA_SERVICE} on $1"
            log_failure_msg2
            exit 1
         fi

         IFCONFIG=${IFCONFIG} /lib/services/${WPA_SERVICE} $1 down
         evaluate_retval
      fi

      log_info_msg "Stopping wpa_supplicant on the $1 interface..."

      if [ -e /run/wpa_supplicant/$1.pid ]; then
         kill -9 $(cat /run/wpa_supplicant/$1.pid)
         rm -f /run/wpa_supplicant/$1.pid /run/wpa_supplicant/$1
         evaluate_retval
      else
         log_warning_msg "\nwpa_supplicant already stopped on $1"
         exit 0
      fi
   ;;

   *)
      echo "Usage: $0 [interface] {up|down}"
      exit 1
   ;;
esac

# End services/wpa


More information about the blfs-dev mailing list