#! /bin/sh # Copyright (c) 1996-2011 SuSE GmbH Nuernberg, Germany. All rights reserved. # # Author: Christopher Mahmood # # /etc/init.d/snmptrapd # ### BEGIN INIT INFO # Provides: snmptrapd # Required-Start: $network # Required-Stop: $network # Default-Start: 2 3 5 # Default-Stop: 0 1 6 # Description: Receive and log SNMP trap messages # Short-Description: Receive and log SNMP trap messages ### END INIT INFO SNMPTRAPD=/usr/sbin/snmptrapd SNMPTRAPD_CONF="/etc/snmp/snmptrapd.conf" SNMPTRAPD_LOGTARGET="/var/log/net-snmpd.log" SNMPTRAPD_PID="/var/run/snmptrapd.pid" test -x $SNMPTRAPD || { echo "$SNMPTRAPD not installed"; if [ "$1" = "stop" ]; then exit 0; else exit 5; fi; } # Check for existence of needed config file and read it SNMPD_CONFIG=/etc/sysconfig/net-snmp test -r $SNMPD_CONFIG || { echo "$SNMPD_CONFIG doesn't exist."; if [ "$1" = "stop" ]; then exit 0; else exit 6; fi; } # Read config . $SNMPD_CONFIG # Shell functions sourced from /etc/rc.status: # rc_check check and set local and overall rc status # rc_status check and set local and overall rc status # rc_status -v ditto but be verbose in local rc status # rc_status -v -r ditto and clear the local rc status # rc_failed set local and overall rc status to failed # rc_failed set local and overall rc status to # rc_reset clear local rc status (overall remains) # rc_exit exit appropriate to overall rc status . /etc/rc.status # First reset status of this service rc_reset # Return values acc. to LSB for all commands but status: # 0 - success # 1 - generic or unspecified error # 2 - invalid or excess argument(s) # 3 - unimplemented feature (e.g. "reload") # 4 - insufficient privilege # 5 - program is not installed # 6 - program is not configured # 7 - program is not running # # Note that starting an already running service, stopping # or restarting a not-running service as well as the restart # with force-reload (in case signalling is not supported) are # considered a success. if [ $SNMPTRAPD_CONF = "/etc/snmp/snmptrapd.conf" ]; then SNMPTRAPD_CONF="" else SNMPTRAPD_CONF="-c $SNMPTRAPD_CONF" fi # # If log destination is set to "F" define a log file. # if [ ${SNMPD_LOGDEST:-S} = "F" ]; then SNMPTRAPD_LOGTARGET="${SNMPTRAPD_LOGTARGET:-/var/log/net-snmpd.log}" fi # # If log destionation is set to "S" use syslog LOG_DAEMON facility. # if [ ${SNMPD_LOGDEST:-S} = "S" ]; then SNMPTRAPD_LOGTARGET="d" fi case "$1" in start) echo -n "Starting snmptrapd: " startproc $SNMPTRAPD $SNMPTRAPD_CONF -A -L${SNMPD_LOGDEST:-S} ${SNMPD_LOGLEVEL:-n} $SNMPTRAPD_LOGTARGET -p $SNMPTRAPD_PID $SNMPD_LISTEN rc_status -v ;; stop) echo -n "Shutting down snmptrapd: " killproc -TERM $SNMPTRAPD if [ -f "$SNMPTAPDD_LOGFILE" ]; then DATE=$(date +"%Y%m%d") /bin/mv "$SNMPTAPDD_LOGFILE" "$SNMPTAPDD_LOGFILE-$DATE" test -x /usr/bin/bzip2 && /usr/bin/bzip2 "$SNMPTAPDD_LOGFILE-$DATE" fi rc_status -v ;; try-restart) $0 status >/dev/null && $0 restart rc_status ;; restart) $0 stop $0 start rc_status ;; force-reload) echo -n "Reload service snmptrapd: " killproc -HUP $SNMPTRAPD rc_status -v ;; reload) echo -n "Reload service snmptrapd: " killproc -HUP $SNMPTRAPD rc_status -v ;; status) echo -n "Checking for service snmptrapd: " checkproc $SNMPTRAPD rc_status -v ;; *) echo "Usage: $0 {start|stop|try-restart|restart|force-reload|reload|status}" exit 1 ;; esac rc_exit