#!/bin/sh # #NADDS Agent - http://nadds.drmadcow.net #Cisco CSS ApSvc Agent #Agent Author: David Blizard #Date: 2003-May-29 (V1.1) . /usr/local/bcnu/etc/bcnuenv . $BCNUHOME/agent/agent_head #setup file handles SVCNAMES=$BCNUTMP/${BCNUAGENT}.svc.names SVCSTATES=$BCNUTMP/${BCNUAGENT}.svc.states ERRFILE=$BCNUTMP/${BCNUAGENT}.err MSGFILE=$BCNUTMP/${BCNUAGENT}.msg NAMEDATA=$BCNUTMP/${BCNUAGENT}.name.data STATEDATA=$BCNUTMP/${BCNUAGENT}.state.data NAMENUM=$BCNUTMP/${BCNUAGENT}.name.num STATENUM=$BCNUTMP/${BCNUAGENT}.state.num TMPFILE=$BCNUTMP/${BCNUAGENT}.tmp rm -f $SVCNAMES $SVCSTATES $ERRFILE $MSGFILE $NAMEDATA $STATEDATA $NAMENUM $STATENUM $TMPFILE 2>/dev/null #Set Agent Status OK=0 #Define ApSvc status - DO NOT CHANGE SUSPENDED=1 DOWN=2 ALIVE=4 DYING=5 #CISCO CSS paramaters HOST= COMMUNITY= SVCSTATEMIB=enterprises.2467.1.15.2.1.17 SVCNAMEMIB=enterprises.2467.1.15.2.1.1 #get apSvcNames snmpwalk -Cc -c $COMMUNITY $HOST $SVCNAMEMIB > $SVCNAMES 2>$ERRFILE if [ $? -ne 0 ] ;then BCNUMSG="$BCNU -m 'warning - snmpwalk failed getting apSvcNames' -f $ERRFILE -e $BCNU_WARN -t $BCNUHOSTTYPE $BCNUHOST" bcnu_warn_send exit 1 fi #get apSvcStates snmpwalk -Cc -c $COMMUNITY $HOST $SVCSTATEMIB > $SVCSTATES 2>$ERRFILE if [ $? -ne 0 ] ;then BCNUMSG="$BCNU -m 'warning - snmpwalk failed getting apSvcStates' -f $ERRFILE -e $BCNU_WARN -t $BCNUHOSTTYPE $BCNUHOST" bcnu_warn_send exit 1 fi #strip unnecessary data awk '{print $3}' $SVCNAMES | sed 's/"//g' > $NAMEDATA 2>/dev/null awk '{print $3}' $SVCSTATES > $STATEDATA 2>/dev/null #check for errors and warnings grep $DOWN $STATEDATA > /dev/null 2>/dev/null if [ $? -eq 0 ] ;then OK=1 else grep $DYING $STATEDATA > /dev/null 2>/dev/null if [ $? -eq 0 ] ;then OK=2 fi fi #format state data sed 's/1/SUSPENDED/g' $STATEDATA > $TMPFILE 2>/dev/null mv -f $TMPFILE $STATEDATA sed 's/2/DOWN/g' $STATEDATA > $TMPFILE 2>/dev/null mv -f $TMPFILE $STATEDATA sed 's/5/DYING/g' $STATEDATA > $TMPFILE 2>/dev/null mv -f $TMPFILE $STATEDATA sed 's/4/ALIVE/g' $STATEDATA > $TMPFILE 2>/dev/null mv -f $TMPFILE $STATEDATA #add line numbers for join command cat -n $STATEDATA > $STATENUM 2>/dev/null cat -n $NAMEDATA > $NAMENUM 2>/dev/null #join service name and service state join $NAMENUM $STATENUM > $TMPFILE 2>/dev/null echo -e "\n***Cisco CSS - Service Status Report***\n" > $MSGFILE 2>/dev/null #remove line numbers from join command awk '{print $2 " - " $3}' $TMPFILE >> $MSGFILE 2>/dev/null #send BCNU message if [ $OK -eq 0 ] ;then BCNUMSG="$BCNU -m 'ok - Cisco CSS Services Alive' -f $MSGFILE -e $BCNU_OK -t $BCNUHOSTTYPE $BCNUHOST" bcnu_send elif [ $OK -eq 1 ] ;then BCNUMSG="$BCNU -m 'error - Cisco CSS Services Down' -f $MSGFILE -e $BCNU_ERR -t $BCNUHOSTTYPE $BCNUHOST" bcnu_err_send elif [ $OK -eq 2 ] ;then BCNUMSG="$BCNU -m 'warning - Cisco CSS Services Dying' -f $MSGFILE -e $BCNU_WARN -t $BCNUHOSTTYPE $BCNUHOST" bcnu_warn_send fi