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

Armin K. krejzi at email.com
Sun Feb 3 19:24:01 PST 2013


On 02/04/2013 03:41 AM, Armin K. wrote:
> On 02/03/2013 06:26 PM, Ivan Kovnatsky wrote:
>>
>> 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.
>
>

I've updated the script a bit, introduced WPA_ARGS variable that can be 
used in ifconfig.interface to pass aditional arguments to wpa_supplicant 
command line and did some minor corrections to the last one plus I've 
modified dhclient script, so dhcp should work great now. I haven't 
tested it with static setup.

Script will be available in blfs-bootscripts package in few hours, I you 
can't wait, take it from attachment
-------------- 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: 2013-02-04 04:21:36 +0100 (Mon, 04 Feb 2013) $

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

case "$2" in
   up)

      if [ -e /run/wpa_supplicant/$1.pid ]; then
         log_warning_msg "\n wpa_supplicant already running on $1."
         exit 0
      fi

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

      log_info_msg "\n Starting wpa_supplicant on the $1 interface..."

      mkdir -p /run/wpa_supplicant

      /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 ${WPA_ARGS}

      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 "\n Cannot start ${WPA_SERVICE} on $1"
            log_failure_msg2
            exit 1
         fi

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

   down)
      if [ -n "${WPA_SERVICE}" ]; then
         if [ ! -e /lib/services/${WPA_SERVICE} -a ! -x /lib/services/${WPA_SERVICE} ]; then
            log_warning_msg "\n Cannot stop ${WPA_SERVICE} on $1"
         else
            IFCONFIG=${IFCONFIG} /lib/services/${WPA_SERVICE} $1 down
         fi
      fi

      log_info_msg "\n 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 "\n wpa_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