97 lines
2.5 KiB
Bash
97 lines
2.5 KiB
Bash
#!/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: bdubbs $
|
|
#$Date: 2016-09-02 23:10:02 -0500 (Fri, 02 Sep 2016) $
|
|
|
|
. /lib/lsb/init-functions
|
|
. $IFCONFIG
|
|
|
|
CFGFILE=/etc/sysconfig/wpa_supplicant-${IFCONFIG##*.}.conf
|
|
PIDFILE=/run/wpa_supplicant/$1.pid
|
|
CONTROL_IFACE=/run/wpa_supplicant/$1
|
|
|
|
case "$2" in
|
|
up)
|
|
|
|
if [ -e ${PIDFILE} ]; then
|
|
ps $(cat ${PIDFILE}) | grep wpa_supplicant >/dev/null
|
|
if [ "$?" = "0" ]; then
|
|
log_warning_msg "\n wpa_supplicant already running on $1."
|
|
exit 0
|
|
else
|
|
rm ${PIDFILE}
|
|
fi
|
|
fi
|
|
|
|
if [ ! -e ${CFGFILE} ]; then
|
|
log_info_msg "\n wpa_supplicant configuration file ${CFGFILE} not present"
|
|
log_failure_msg2
|
|
exit 1
|
|
fi
|
|
|
|
# Only specify -C on command line if it is not in CFGFILE
|
|
if ! grep -q ctrl_interface ${CFGFILE}; then
|
|
WPA_ARGS="-C/run/wpa_supplicant ${WPA_ARGS}"
|
|
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${PIDFILE} \
|
|
-c${CFGFILE} -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 ${PIDFILE} ]; then
|
|
kill -9 $(cat ${PIDFILE})
|
|
rm -f ${PIDFILE} ${CONTROL_IFACE}
|
|
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
|