- #!/bin/sh
- #
- # snmpd-ucd.sh
- #
- # Start UCD SNMP daemon and trap catcher. Backup the log file *first*
- # since currently the daemon truncates and overwrites any pre-existing file.
- #
- # killproc() and pidofproc() lifted from Linux's /etc/init.d/functions.
- #
- # NOTE: Solaris users must uncomment the proper PSARGS definition below. XXX
- #
- USAGE="Usage: `basename $0` start|stop|restart"
- #------------------------------------ -o-
- # Globals.
- #
- DAEMONLOG=/var/log/snmpd.log
- TRAPLOG=/var/log/snmptrapd.log
- LOGDIR=/var/log/SNMPDLOGS
- D=".`date '+%h%d_%H%M' | sed 's/([a-z])0/1/' | tr 'A-Z' 'a-z'`"
- PSARGS=auwwx
- #PSARGS=-ef # Solaris.
- DEBUGFLAG= # -D # Toggles use of debugging
- #------------------------------------ -o-
- # Function definitions.
- #
- killproc() { # <program> [signal]
- base=
- killlevel="-9"
- notset=1
- pid=
- #
- # Parse.
- #
- [ $# = 0 ] && {
- echo "`basename $0`: Wrong arguments to killproc()." 1>&2
- return 1
- }
- base="`basename $1`"
- [ -n "$2" ] && {
- killlevel=$2
- notset=0
- }
- #
- # Kill process.
- #
- pid=`pidofproc $base 2>/dev/null`
- [ -z "$pid" ] && {
- pid=`ps $PSARGS | egrep $base | egrep -v egrep | egrep -v $0 | awk '{ print $2 }'`;
- }
- [ -z "$pid" ] && {
- echo "`basename $0`: killproc: Could not find process ID."
- }
- [ -n "$pid" ] && {
- echo -n "$base "
- #
- # Kill with -TERM then -KILL by default. Use given
- # instead if one was passed in.
- #
- [ "$notset" = 1 ] && {
- kill -TERM $pid
- sleep 1
- [ -n "`ps $PSARGS |
- awk '{print $2}' | grep $pid`" ] && {
- sleep 3
- kill -KILL $pid
- }
- true
- } || {
- kill $killlevel $pid
- }
- }
- rm -f /var/run/$base.pid
- } # end killproc()
- pidofproc() { # <program>
- pid=
- [ $# = 0 ] && {
- echo "`basename $0`: Wrong argument to pidofproc()." 1>&2
- return 1
- }
- #
- # Try looking for a /var/run file.
- #
- [ -f /var/run/$1.pid ] && {
- pid=`head -1 /var/run/$1.pid`
- [ -n "$pid" ] && {
- echo $pid
- return 0
- }
- }
- #
- # Try pidof. (Linux offering.)
- #
- pid=`pidof $1`
- [ -n "$pid" ] && {
- echo $pid
- return 0
- }
- #
- # Try ps.
- #
- ps $PSARGS | awk ' BEGIN { prog=ARGV[1]; ARGC=1 }
- { if ((prog == $11) ||
- (("(" prog ")") == $11) ||
- ((prog ":") == $11))
- {
- print $2
- }
- }' $1
- } # end pidofproc()
- #------------------------------------ -o-
- # Action.
- #
- case "$1" in
- start)
- echo "Starting SNMP. "
- cp $DAEMONLOG ${DAEMONLOG}$D
- cp $TRAPLOG ${TRAPLOG}$D
- cat /dev/null >$TRAPLOG
- [ ! -e $LOGDIR ] && mkdir $LOGDIR
- mv ${DAEMONLOG}$D ${TRAPLOG}$D $LOGDIR
- gzip -r $LOGDIR 2>/dev/null &
- snmpd -a -d -V $DEBUGFLAG
- snmptrapd -P >>$TRAPLOG &
- echo
- ;;
- stop)
- echo -n "Shutting down SNMP: "
- killproc snmpd
- killproc snmptrapd
- echo
- ;;
- restart)
- $0 stop
- $0 start
- ;;
- *)
- echo $USAGE 1>&2
- exit 1
- esac
- #------------------------------------ -o-
- #
- exit 0