#!/bin/bash
# sed command
SED="sed --in-place"
CONFIG="/etc/rc.conf"
function daemons_add {
# param 1: member
# param 2: config (default: $CONFIG)
local member=${1}
# check for init script
if [[ ! -e /etc/rc.d/${member} ]]; then
echo ${member} service does not exist! >&2
return 1
elif cat /etc/rc.conf | grep DAEMONS | grep ${member}
then echo ${member} is already in startup service list.
else
${SED} -e "s/DAEMONS=(\([^)]*\))/DAEMONS=(\1 ${1})/" ${CONFIG}
fi
}
function daemons_remove {
# param 1: member
# param 2: config (default: $CONFIG)
local member=${1}
${SED} "s/DAEMONS=(\([^)]*\) ${1}\([^)]*\))/DAEMONS=(\1\2)/" ${CONFIG}
}
function daemons_start {
# param 1: member
# param 2: config (default: $CONFIG)
local member=${1}
if [[ ! -e /etc/rc.d/${member} ]]; then
echo ${member} service does not exist! >&2
return 1
elif [[ ! -e /var/run/daemons/${member} ]]
then /etc/rc.d/${member} start
else
echo ${member} is already started
fi
}
function daemons_stop {
# param 1: member
# param 2: config (default: $CONFIG)
local member=${1}
if [[ ! -e /etc/rc.d/${member} ]]; then
echo ${member} service does not exist! >&2
return 1
elif [[ ! -e /var/run/daemons/${member} ]]
then echo ${member} is not running
else
/etc/rc.d/${member} stop
fi
}
function usage {
echo "$0 add|remove|start|stop daemon [daemon]..."
}
command=${1}
daemons=(${@:2})
# usage check
if [[ $# -lt 2 || (${command} != add && ${command} != remove && ${command} != start && ${command} != stop) ]]; then
usage >&2
exit 1
fi
for daemon in ${daemons[@]}; do
daemons_${command} ${daemon}
done