All pastes #533709 Raw Edit

hussam

public text v1 · immutable
·published 2007-06-03 15:33 UTC
rendered paste body
#!/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