#!/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