Blame local/snmp-ucd.sh

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