daemons
enable and disable daemons in rc.conf (inspired by 'chkconfig')
File contents
#!/bin/bash
# $Id: daemons,v 1.2 2007/06/03 22:36:04 juergen Exp $
# sed command
SED="sed --in-place"
CONFIG="/etc/rc.conf"
#defaults, only used in add command
before='' # insert before
function daemon_exists {
egrep -q "[^#]*[[:space:]]*DAEMONS=\([^)]*[[:space:]]${1}|${1}[[:space:]]*[^\)]*\)" ${CONFIG}
}
function daemon_disabled {
daemon_exists !${1}
}
function daemons {
# param 1: command
# param 2: member
local member=${2}
local command=${1}
case "${command}" in
disable)
if daemon_disabled ${member}; then
return 1
else
sed_command="s/DAEMONS=(\([^)]*\)${member}\([^)]*\))/DAEMONS=(\1!${member}\2)/"
fi ;;
enable)
sed_command="s/DAEMONS=(\([^)]*\)!${member}\([^)]*\))/DAEMONS=(\1${member}\2)/" ;;
add)
if [[ ! -e /etc/rc.d/${member} ]]; then
echo /etc/rc.d/${member} does not exist! >&2
return 1
elif ! daemon_exists ${member}; then
# allign
if [[ -z "${before}" ]]; then
member=" ${member}"
else
member="${member} "
fi
sed_command="s/DAEMONS=(\([^)]*\)\(${before}[^)]*\))/DAEMONS=(\1${member}\2)/"
else
return 1
fi
;;
remove)
sed_command="s/DAEMONS=(\([^)]*\)\([[:space:]]${member}\|${member}[[:space:]]\)\([^)]*\))/DAEMONS=(\1\3)/" ;;
esac
${SED} -e "${sed_command}" ${CONFIG}
}
function usage {
echo "Usage: $0 [-b daemon] add|remove|enable|disable daemon [daemon]..."
}
# parse options
while getopts "b:a:" optname; do
case "${optname}" in
"b")
before="$OPTARG" ;;
*)
usage 2>&1; exit 1 ;;
esac
done
command=${!OPTIND}
daemons=(${@:${OPTIND}+1})
# usage check
if [[ ${#daemons[@]} -lt 1 ]]; then
usage >&2
exit 1
fi
# check for valid command
case "${command}" in
enable|disable|add|remove) ;;
*) usage 2>&1 ; exit 1 ;;
esac
for daemon in ${daemons[@]}; do
daemons ${command} ${daemon}
done
Click here to get the file
