summaryrefslogtreecommitdiff
path: root/local/snmp-ucd.sh
diff options
context:
space:
mode:
Diffstat (limited to 'local/snmp-ucd.sh')
-rwxr-xr-xlocal/snmp-ucd.sh187
1 files changed, 187 insertions, 0 deletions
diff --git a/local/snmp-ucd.sh b/local/snmp-ucd.sh
new file mode 100755
index 0000000..7d16b74
--- /dev/null
+++ b/local/snmp-ucd.sh
@@ -0,0 +1,187 @@
+#!/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 -Lf "$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
+
+