885 lines
28 KiB
Bash
Executable File
885 lines
28 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# get_mib_objects
|
|
#
|
|
# Script to scan an SNMP agent for several MIBs, using various
|
|
# facilities (Get if applicable, GetNext otherwise)
|
|
#
|
|
# This script saves stats information in a file in $TMPDIR/mib.$SUBSYS.<date&time>
|
|
# It is particularly useful to detect memory leaks by querying the
|
|
# agent several times in a row.
|
|
#
|
|
# This script may also save MIB output into a data file.
|
|
#
|
|
# To add new menu entries, search for the keyword GJB throughout this
|
|
# file to let you know how to do so.
|
|
#
|
|
# Gerard Berthet, SGI, October 19, 1994
|
|
#
|
|
|
|
MAX_COUNT=1
|
|
PREFIX="-----> "
|
|
MARKER="==========================================================================================================="
|
|
START=`date`
|
|
DFLT_AGENT_HOST=`uname -n`
|
|
DFLT_COMMUNITY=public
|
|
DFLT_MAX_COUNT=1
|
|
DFLT_SLEEP=0
|
|
DFLT_ANS_NO="no"
|
|
DFLT_ANS_YES="yes"
|
|
DFLT_PRINT_STATS=0 # means no
|
|
DFLT_MACHINE=$DFLT_AGENT_HOST
|
|
|
|
SGI_WALK=snmpwalk
|
|
CMU_WALK=cmu_snmpwalk
|
|
SNMPGET=cmu_snmpget
|
|
DFLT_WALK="cmu_snmpwalk"
|
|
|
|
NULL_DATAFILE=/dev/null
|
|
DFLT_DATAFILE=$NULL_DATAFILE
|
|
DATAFILE=$DFLT_DATAFILE
|
|
DFLT_SAVE_STATS_RUNS=-1
|
|
DFLT_SAVE_STATS=$DFLT_SAVE_STATS_RUNS # means print at end of all runs
|
|
|
|
FILEXT=`date +%b%d_%Y_%H%M%S`
|
|
PWD=`pwd`
|
|
#TMPDIR=$PWD
|
|
TMPDIR="/tmp"
|
|
TMPFILE="$TMPDIR/date.$$"
|
|
date > $TMPFILE
|
|
ERR=$?
|
|
if [ x$ERR != x0 ]; then
|
|
echo Cannot save data or stats in $TMPDIR
|
|
exit
|
|
else
|
|
echo Stats and/or stats will be saved in $TMPDIR
|
|
fi
|
|
rm -f $TMPFILE
|
|
|
|
FILEPREFIX="$TMPDIR/mib"
|
|
# FILEPREFIX="TMPDIR/mib"
|
|
STATSFILE=$FILEPREFIX.stats.$FILEXT
|
|
|
|
rm -f $STATSFILE
|
|
|
|
#
|
|
# Define values for menu entries
|
|
#
|
|
SEL_TOP=0
|
|
SEL_HPUX=1
|
|
SEL_MIBII=2
|
|
SEL_HPCOMPSYS=3
|
|
SEL_HPFS=4
|
|
SEL_HPPROC=5
|
|
SEL_HPTRAP=6
|
|
SEL_HPCONF=7
|
|
SEL_HPICMP=8
|
|
SEL_HPAUTH=9
|
|
SEL_SGI=10
|
|
SEL_STATS=11
|
|
SEL_OBJS=12
|
|
SEL_CLEAN=13
|
|
|
|
SEL_MIB2_SYS=14
|
|
SEL_MIB2_IF=15
|
|
SEL_MIB2_AT=16
|
|
SEL_MIB2_IP=17
|
|
SEL_MIB2_IP_SCALARS=18
|
|
SEL_MIB2_IP_ADDRTBL=19
|
|
SEL_MIB2_IP_ROUTETBL=20
|
|
SEL_MIB2_IP_ATTBL=21
|
|
SEL_MIB2_ICMP=22
|
|
SEL_MIB2_TCP=23
|
|
SEL_MIB2_TCP_SCALARS=24
|
|
SEL_MIB2_TCP_CONNTBL=25
|
|
SEL_MIB2_UDP=26
|
|
SEL_MIB2_UDP_SCALARS=27
|
|
SEL_MIB2_UDP_LISTTBL=28
|
|
|
|
SEL_LAST=$SEL_MIB2_UDP_LISTTBL
|
|
|
|
#
|
|
# GJB -- Add the new menu entry above the SEL_LAST line,
|
|
# by assigning the next integer value.
|
|
# Make sure you also set the line with SEL_LAST to the
|
|
# last entry you defined.
|
|
#
|
|
|
|
MIN_SEL=1
|
|
MAX_SEL=$SEL_LAST
|
|
DFLT_SEL=$SEL_HPUX
|
|
|
|
# ######### #
|
|
# MAIN LOOP #
|
|
# ######### #
|
|
while [ 1 -eq 1 ]
|
|
do
|
|
trap "continue" 2 3
|
|
|
|
# ---------------------------------------------------------------
|
|
# Prompt for MIB group
|
|
# ---------------------------------------------------------------
|
|
cat << FOO
|
|
|
|
Select which MIB group you want to walk:
|
|
|
|
$SEL_TOP. Exit $SEL_MIB2_SYS. MIB-II system
|
|
$SEL_HPUX. all HP-UX MIB $SEL_MIB2_IF. MIB-II interfaces
|
|
$SEL_MIBII. all MIB-II $SEL_MIB2_AT. MIB-II at group
|
|
$SEL_HPCOMPSYS. HP computerSystem $SEL_MIB2_IP. MIB-II ip group
|
|
$SEL_HPFS. HP fileSystem $SEL_MIB2_IP_SCALARS. MIB-II ip scalars
|
|
$SEL_HPPROC. HP processes $SEL_MIB2_IP_ADDRTBL. MIB-II ip address table
|
|
$SEL_HPTRAP. HP trapDestinations $SEL_MIB2_IP_ROUTETBL. MIB-II ip routing table
|
|
$SEL_HPCONF. HP snmpdConf $SEL_MIB2_IP_ATTBL. MIB-II ip address translation table
|
|
$SEL_HPICMP. HP icmpEchoReq $SEL_MIB2_ICMP. MIB-II icmp group
|
|
$SEL_HPAUTH. HP authFail $SEL_MIB2_TCP. MIB-II tcp group
|
|
$SEL_SGI. SGI Private MIB $SEL_MIB2_TCP_SCALARS. MIB-II tcp scalars
|
|
$SEL_STATS. View Statistics File $SEL_MIB2_TCP_CONNTBL. MIB-II tcp connection table
|
|
$SEL_OBJS. View Collected Objects $SEL_MIB2_UDP. MIB-II udp group
|
|
$SEL_CLEAN. Remove stats & data files $SEL_MIB2_UDP_SCALARS. MIB-II udp scalars
|
|
$SEL_MIB2_UDP_LISTTBL. MIB-II udp listener table
|
|
|
|
FOO
|
|
#
|
|
# GJB -- Add new menu entries above
|
|
#
|
|
|
|
DFLT_VAL=$DFLT_SEL
|
|
echo -n "Enter selection [$DFLT_VAL]: "
|
|
read ANS
|
|
if [ -n "$ANS" ]; then
|
|
if [ $ANS -eq 0 ]; then
|
|
exit
|
|
fi
|
|
if [ $ANS -lt $MIN_SEL -o $ANS -gt $MAX_SEL ]; then
|
|
echo "Invalid entry. Assuming default MIB group: " $DFLT_VAL
|
|
SEL=$DFLT_VAL
|
|
else
|
|
SEL=$ANS
|
|
fi
|
|
else
|
|
SEL=$DFLT_VAL
|
|
fi
|
|
DFLT_SEL=$SEL
|
|
|
|
# ---------------------------------------------------------------
|
|
# If cleanup, just do it now.
|
|
# ---------------------------------------------------------------
|
|
if [ $SEL -eq $SEL_CLEAN ]; then
|
|
CMD="rm -f $FILEPREFIX*"
|
|
echo "Removing all temporary files... ("$CMD")"
|
|
$CMD
|
|
continue;
|
|
fi
|
|
|
|
# ---------------------------------------------------------------
|
|
# Verify if just want to view stats or collected objects
|
|
# ---------------------------------------------------------------
|
|
if [ $SEL -eq $SEL_STATS ]; then
|
|
vi $STATSFILE
|
|
continue;
|
|
fi
|
|
|
|
if [ $SEL -eq $SEL_OBJS ]; then
|
|
vi $DATAFILE
|
|
continue;
|
|
fi
|
|
|
|
# ---------------------------------------------------------------
|
|
# Prompt to not prompt again if second time
|
|
# ---------------------------------------------------------------
|
|
DFLT_VAL=$DFLT_ANS_NO
|
|
echo " "
|
|
echo -n "Do you want the same defaults [$DFLT_VAL] ? "
|
|
read ANS
|
|
if [ -z "$ANS" -o x$ANS = xn -o x$ANS = xN ]; then
|
|
RUN_WITH_DFLTS=0
|
|
else
|
|
RUN_WITH_DFLTS=1
|
|
fi
|
|
|
|
# ---------------------------------------------------------------
|
|
# Prompt for node name to poll
|
|
# ---------------------------------------------------------------
|
|
DFLT_VAL=$DFLT_AGENT_HOST
|
|
if [ $RUN_WITH_DFLTS -eq 1 ]; then
|
|
HOST=$DFLT_AGENT_HOST
|
|
else
|
|
echo " "
|
|
echo -n "Which node do you wish to query [$DFLT_VAL] ? "
|
|
read ANS
|
|
if [ -n "$ANS" ]; then
|
|
HOST=$ANS
|
|
else
|
|
HOST=$DFLT_VAL
|
|
fi
|
|
echo "Polling node: " $HOST
|
|
fi
|
|
DFLT_AGENT_HOST=$HOST
|
|
|
|
# ---------------------------------------------------------------
|
|
# Prompt for community string
|
|
# ---------------------------------------------------------------
|
|
if [ $RUN_WITH_DFLTS -eq 1 ]; then
|
|
COMM=$DFLT_COMMUNITY
|
|
else
|
|
DFLT_VAL=$DFLT_COMMUNITY
|
|
echo " "
|
|
echo -n "Which community string to use [$DFLT_VAL] ? "
|
|
read ANS
|
|
if [ -n "$ANS" ]; then
|
|
COMM=$ANS
|
|
else
|
|
COMM=$DFLT_COMMUNITY
|
|
fi
|
|
echo "Using community: " $COMM
|
|
fi
|
|
DFLT_COMMUNITY=$COMM
|
|
|
|
# ---------------------------------------------------------------
|
|
# Prompt for number of times to run
|
|
# ---------------------------------------------------------------
|
|
if [ $RUN_WITH_DFLTS -eq 1 ]; then
|
|
MAX_COUNT=$DFLT_MAX_COUNT
|
|
else
|
|
DFLT_VAL=$DFLT_MAX_COUNT
|
|
echo " "
|
|
echo -n "How many times do you want to run it? [$DFLT_VAL]: "
|
|
read ANS
|
|
if [ -n "$ANS" ]; then
|
|
if [ $ANS -lt 1 ]; then
|
|
echo "Invalid entry. Assuming default value: " $DFLT_VAL
|
|
MAX_COUNT=$DFLT_VAL
|
|
else
|
|
MAX_COUNT=$ANS
|
|
fi
|
|
else
|
|
MAX_COUNT=$DFLT_MAX_COUNT
|
|
fi
|
|
fi
|
|
DFLT_MAX_COUNT=$MAX_COUNT
|
|
|
|
COUNT=0
|
|
|
|
# ---------------------------------------------------------------
|
|
# Prompt for number of seconds between runs
|
|
# ---------------------------------------------------------------
|
|
if [ $RUN_WITH_DFLTS -eq 1 ]; then
|
|
SLEEP=$DFLT_SLEEP
|
|
else
|
|
if [ $MAX_COUNT -gt 1 ]; then
|
|
DFLT_VAL=$DFLT_SLEEP
|
|
echo -n "How many seconds do you want hold between runs? [$DFLT_VAL]: "
|
|
read ANS
|
|
if [ -n "$ANS" ]; then
|
|
if [ $ANS -lt 0 ]; then
|
|
echo "Invalid entry. Assuming default value: " $DFLT_VAL
|
|
SLEEP=$DFLT_VAL
|
|
else
|
|
SLEEP=$ANS
|
|
fi
|
|
else
|
|
SLEEP=$DFLT_VAL
|
|
fi
|
|
else
|
|
SLEEP=$DFLT_SLEEP
|
|
fi
|
|
fi
|
|
DFLT_SLEEP=$SLEEP
|
|
|
|
# ---------------------------------------------------------------
|
|
# Prompt for printing stats
|
|
# ---------------------------------------------------------------
|
|
if [ $RUN_WITH_DFLTS -eq 1 ]; then
|
|
PRINT_STATS=$DFLT_PRINT_STATS
|
|
else
|
|
if [ $DFLT_PRINT_STATS -eq 1 ]; then
|
|
DFLT_VAL="yes"
|
|
else
|
|
DFLT_VAL="no"
|
|
fi
|
|
echo -n "Do you want to print agent stats? [$DFLT_VAL]: "
|
|
read ANS
|
|
if [ -n "$ANS" ]; then
|
|
if [ x"$ANS" = "xyes" -o x"$ANS" = "xy" -o x"$ANS" = "xY" -o x"$ANS" = "xYES" ]
|
|
then
|
|
PRINT_STATS=1
|
|
else
|
|
if [ x"$ANS" = "xno" -o x"$ANS" = "xn" -o x"$ANS" = "xN" -o x"$ANS" = "xNO" ]
|
|
then
|
|
PRINT_STATS=0
|
|
fi
|
|
fi
|
|
else
|
|
PRINT_STATS=$DFLT_PRINT_STATS
|
|
fi
|
|
fi
|
|
DFLT_PRINT_STATS=$PRINT_STATS
|
|
if [ $PRINT_STATS -eq 0 ]; then
|
|
echo "Stats will NOT be printed"
|
|
else
|
|
echo "Stats will be printed"
|
|
fi
|
|
|
|
# ---------------------------------------------------------------
|
|
# Prompt for number of runs between printing stats
|
|
# ---------------------------------------------------------------
|
|
if [ $PRINT_STATS -eq 1 ]; then
|
|
if [ $RUN_WITH_DFLTS -eq 1 ]; then
|
|
SAVE_STATS=$DFLT_SAVE_STATS
|
|
else
|
|
if [ $MAX_COUNT -gt 1 ]; then
|
|
if [ $DFLT_SAVE_STATS -eq $DFLT_SAVE_STATS_RUNS ]; then
|
|
DFLT_VAL="END_ONLY"
|
|
else
|
|
DFLT_VAL=$DFLT_SAVE_STATS
|
|
fi
|
|
echo -n "Every how many runs do you want to print agent stats? [$DFLT_VAL]: "
|
|
read ANS
|
|
if [ -n "$ANS" ]; then
|
|
if [ $ANS -lt 1 ]; then
|
|
echo "Invalid entry. Assuming default value: " $DFLT_VAL
|
|
SAVE_STATS=$DFLT_SAVE_STATS_RUNS
|
|
else
|
|
SAVE_STATS=$ANS
|
|
fi
|
|
else
|
|
SAVE_STATS=$DFLT_SAVE_STATS_RUNS
|
|
fi
|
|
else
|
|
SAVE_STATS=$DFLT_SAVE_STATS_RUNS
|
|
fi
|
|
fi
|
|
else
|
|
SAVE_STATS=$DFLT_SAVE_STATS_RUNS
|
|
fi
|
|
DFLT_SAVE_STATS=$SAVE_STATS
|
|
|
|
# ---------------------------------------------------------------
|
|
# Place a marker in the STATSFILE
|
|
# ---------------------------------------------------------------
|
|
|
|
if [ $PRINT_STATS -eq 1 ]; then
|
|
echo $MARKER >> $STATSFILE
|
|
echo $PREFIX "Started at " $START >> $STATSFILE
|
|
fi
|
|
|
|
# ---------------------------------------------------------------
|
|
# Do some pre-processing of the information
|
|
# ---------------------------------------------------------------
|
|
|
|
GET_OPT=0
|
|
|
|
case "$SEL"
|
|
in
|
|
$SEL_HPUX) SUBSYS=hpux
|
|
SYSTEM="HP-UX MIB"
|
|
GET_OPT=0;;
|
|
|
|
$SEL_MIBII) SUBSYS=mib2
|
|
SYSTEM="MIB-II"
|
|
GET_OPT=0;;
|
|
|
|
$SEL_HPCOMPSYS) SUBSYS=hpcompsys
|
|
SYSTEM=computerSystem
|
|
GET_OPT=1;;
|
|
|
|
$SEL_HPFS) SUBSYS=hpfs
|
|
SYSTEM=fileSystem
|
|
GET_OPT=0;;
|
|
|
|
$SEL_HPPROC) SUBSYS=hpprocs
|
|
SYSTEM=processes
|
|
GET_OPT=0;;
|
|
|
|
$SEL_HPTRAP) SUBSYS=hptrapdest
|
|
SYSTEM=trap
|
|
GET_OPT=0;;
|
|
|
|
$SEL_HPCONF) SUBSYS=hpconf
|
|
SYSTEM=snmpdConf
|
|
GET_OPT=1;;
|
|
|
|
$SEL_HPICMP) SUBSYS=hpicmp
|
|
SYSTEM=icmpEchoRequest
|
|
GET_OPT=2;;
|
|
|
|
$SEL_HPAUTH) SUBSYS=hpauth
|
|
SYSTEM=snmpAuthFail
|
|
GET_OPT=0;;
|
|
|
|
$SEL_SGI) SUBSYS=sgi
|
|
SYSTEM=sgiMib
|
|
GET_OPT=0;;
|
|
|
|
$SEL_MIB2_SYS) SUBSYS=mib2sys
|
|
SYSTEM=mib2System
|
|
GET_OPT=1;;
|
|
|
|
$SEL_MIB2_IF) SUBSYS=mib2if
|
|
SYSTEM=mib2Interfaces
|
|
GET_OPT=0;;
|
|
|
|
$SEL_MIB2_AT) SUBSYS=mib2at
|
|
SYSTEM=mib2AddrTransl
|
|
GET_OPT=0;;
|
|
|
|
$SEL_MIB2_IP) SUBSYS=mib2ip
|
|
SYSTEM=mib2IP
|
|
GET_OPT=0;;
|
|
|
|
$SEL_MIB2_IP_SCALARS) SUBSYS=mib2ips
|
|
SYSTEM=mib2IPScalars
|
|
GET_OPT=1;;
|
|
|
|
$SEL_MIB2_IP_ADDRTBL) SUBSYS=mib2ipatbl
|
|
SYSTEM=mib2IPAddrTbl
|
|
GET_OPT=0;;
|
|
|
|
$SEL_MIB2_IP_ROUTETBL) SUBSYS=mib2iprtbl
|
|
SYSTEM=mib2IPRteTbl
|
|
GET_OPT=0;;
|
|
|
|
$SEL_MIB2_IP_ATTBL) SUBSYS=mib2ipattbl
|
|
SYSTEM=mib2IPATTbl
|
|
GET_OPT=0;;
|
|
|
|
$SEL_MIB2_ICMP) SUBSYS=mib2icmp
|
|
SYSTEM=mib2ICMP
|
|
GET_OPT=0;;
|
|
|
|
$SEL_MIB2_TCP) SUBSYS=mib2tcp
|
|
SYSTEM=mib2TCP
|
|
GET_OPT=0;;
|
|
|
|
$SEL_MIB2_TCP_SCALARS) SUBSYS=mib2tcps
|
|
SYSTEM=mib2TCPScalars
|
|
GET_OPT=1;;
|
|
|
|
$SEL_MIB2_TCP_CONNTBL) SUBSYS=mib2tcpctbl
|
|
SYSTEM=mib2TCPConnTbl
|
|
GET_OPT=0;;
|
|
|
|
$SEL_MIB2_UDP) SUBSYS=mib2udp
|
|
SYSTEM=mib2UDP
|
|
GET_OPT=0;;
|
|
|
|
$SEL_MIB2_UDP_SCALARS) SUBSYS=mib2udps
|
|
SYSTEM=mib2UDPScalars
|
|
GET_OPT=1;;
|
|
|
|
$SEL_MIB2_UDP_LISTTBL) SUBSYS=mib2udpltbl
|
|
SYSTEM=mib2UDPListTbl
|
|
GET_OPT=0;;
|
|
|
|
esac
|
|
#
|
|
# GJB -- Add corresponding "elif" entry above to define
|
|
# the two strings associated with the MIB group(s):
|
|
# SUBSYS: a string used to create the filenames where data may be
|
|
# collected.
|
|
# SYSTEM: a string used when saving stats in the stats file.
|
|
#
|
|
# GET_OPT = 0 means that the MIB group is a table and only GetNext applies
|
|
# GET_OPT = 1 means that this MIB group can be queried with Get as well
|
|
# GET_OPT = 2 means that user needs to select a node that applies to i
|
|
# this MIB group. This option applies only to the icmpEchoRequest
|
|
# MIB group.
|
|
#
|
|
|
|
echo You selected $SYSTEM
|
|
MAX_OPT=2
|
|
|
|
# ---------------------------------------------------------------
|
|
# If ICMP ECHO REQUEST in HP-UX MIB, prompt for node to ping
|
|
# ---------------------------------------------------------------
|
|
if [ $GET_OPT -eq 2 ]; then
|
|
if [ $RUN_WITH_DFLTS -eq 1 ]; then
|
|
MACHINE=$DFLT_MACHINE
|
|
else
|
|
|
|
|
|
cat << FOO
|
|
Which machine do you want to ping:
|
|
|
|
1. machine
|
|
2. this
|
|
3. blacktron
|
|
4. froggie (down)
|
|
5. wombat
|
|
|
|
FOO
|
|
MAX_MACHINE=5
|
|
|
|
DFLT_VAL=machine
|
|
echo -n "Enter selection [$DFLT_VAL]: "
|
|
read ANS
|
|
if [ -n "$ANS" ]; then
|
|
if [ $ANS -lt 1 -o $ANS -gt $MAX_MACHINE ]; then
|
|
echo "Invalid entry. Assuming default value: " $DFLT_VAL
|
|
MACHINE=machine
|
|
elif [ $ANS -eq 2 ]; then
|
|
MACHINE=this
|
|
elif [ $ANS -eq 3 ]; then
|
|
MACHINE=blacktron
|
|
elif [ $ANS -eq 4 ]; then
|
|
MACHINE=froggie
|
|
elif [ $ANS -eq 5 ]; then
|
|
MACHINE=wombat
|
|
else
|
|
MACHINE=machine
|
|
fi
|
|
else
|
|
MACHINE=machine
|
|
fi
|
|
|
|
WALK=$SNMPGET
|
|
# Beware if there are more than one entry per host in NIS
|
|
# Note the hack to eliminate slotmachine when lloking for machine
|
|
IP_MACHINE=`ypcat hosts | grep $MACHINE |grep -v slotmachine | cut -f1 | head -1`
|
|
echo You selected $MACHINE $IP_MACHINE
|
|
fi
|
|
DFLT_MACHINE=$MACHINE
|
|
else
|
|
|
|
# ---------------------------------------------------------------
|
|
# Otherwise, prompt for which WALK utility to use
|
|
# ---------------------------------------------------------------
|
|
if [ $RUN_WITH_DFLTS -eq 1 ]; then
|
|
WALK=$DFLT_WALK
|
|
else
|
|
|
|
|
|
cat << FOO
|
|
|
|
Select which utility you wish to use:
|
|
|
|
1. CMU snmpwalk (timeout + names + stop at end of group)
|
|
2. SGI snmpwalk (No timeout + no names + go over end of group)
|
|
FOO
|
|
|
|
if [ $GET_OPT -eq 1 -a $COUNT -eq 0 ]; then
|
|
MAX_OPT=3
|
|
cat << FOO
|
|
3. Get individual elements (SNMP Gets)
|
|
FOO
|
|
|
|
#
|
|
# GJB -- If you create other GET_OPT values, you will need to define
|
|
# their behavior here.
|
|
#
|
|
fi
|
|
|
|
DFLT_VAL=1
|
|
echo " "
|
|
echo -n "Enter selection [$DFLT_VAL]: "
|
|
read ANS
|
|
|
|
if [ -n "$ANS" ]; then
|
|
if [ $ANS -lt 1 -o $ANS -gt $MAX_OPT ]; then
|
|
echo "Invalid entry. Assuming default value: " $DFLT_VAL
|
|
ANS=$DFLT_VAL
|
|
fi
|
|
else
|
|
ANS=$DFLT_VAL
|
|
fi
|
|
|
|
if [ $ANS = 2 ]; then
|
|
WALK=$SGI_WALK
|
|
elif [ $ANS = 3 ]; then
|
|
WALK=$SNMPGET
|
|
else
|
|
WALK=$CMU_WALK
|
|
fi
|
|
fi
|
|
DFLT_WALK=$WALK
|
|
fi
|
|
|
|
# ---------------------------------------------------------------
|
|
# Prompt whether to log data or not to a file
|
|
# ---------------------------------------------------------------
|
|
|
|
if [ $RUN_WITH_DFLTS -eq 1 ]; then
|
|
DATAFILE=$DFLT_DATAFILE
|
|
else
|
|
if [ x"$DATAFILE" = x"$NULL_DATAFILE" ]; then
|
|
DFLT_VAL=n
|
|
else
|
|
DFLT_VAL=y
|
|
fi
|
|
DATAFILE=$FILEPREFIX.$SUBSYS.$FILEXT
|
|
echo " "
|
|
echo -n "Do you wish to log the data to $DATAFILE [$DFLT_VAL]? "
|
|
read ANS
|
|
|
|
if [ -n "$ANS" ]; then
|
|
if [ x$ANS = xn -o x$ANS = xN -o x$ANS = xno -o x$ANS = xNO ]; then
|
|
DATAFILE=$NULL_DATAFILE
|
|
echo Data will NOT be saved
|
|
else
|
|
DATAFILE=$DATAFILE
|
|
echo Data will be saved to $DATAFILE
|
|
fi
|
|
else
|
|
if [ "$DFLT_VAL" = "y" ]; then
|
|
DATAFILE=$DATAFILE
|
|
echo Data will be saved to $DATAFILE
|
|
else
|
|
DATAFILE=$NULL_DATAFILE
|
|
echo Data will NOT be saved
|
|
fi
|
|
fi
|
|
fi
|
|
rm -f $DATAFILE
|
|
DFLT_DATAFILE=$DATAFILE
|
|
|
|
# ---------------------------------------------------------------
|
|
# Perform actual work here
|
|
# ---------------------------------------------------------------
|
|
if [ $PRINT_STATS -eq 1 ]; then
|
|
ps -elf | grep snmpd | grep -v grep >> $STATSFILE
|
|
fi
|
|
|
|
while [ 1 -eq 1 ]
|
|
do
|
|
trap "break" 2 3
|
|
|
|
if [ $SEL = $SEL_TOP ]; then
|
|
break
|
|
|
|
elif [ $SEL = $SEL_HPUX ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIBII ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.2.1 | tee -a $DATAFILE
|
|
|
|
elif [ "$SEL" = $SEL_HPCOMPSYS ]; then
|
|
if [ $WALK = $SNMPGET ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.1.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.2.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.3.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.4.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.5.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.6.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.7.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.8.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.9.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.10.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.11.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.12.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.13.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.14.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1.15.0 | tee -a $DATAFILE
|
|
else
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.1 | tee -a $DATAFILE
|
|
fi
|
|
|
|
elif [ $SEL = $SEL_HPFS ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.2 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_HPPROC ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.3.1.4 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_HPTRAP ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.13.1 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_HPCONF ]; then
|
|
if [ $WALK = $SNMPGET ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.13.2.1.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.13.2.2.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.13.2.3.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.13.2.4.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.13.2.5.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.13.2.6.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.13.2.7.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.13.2.8.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.13.2.9.0 | tee -a $DATAFILE
|
|
else
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.13.2 | tee -a $DATAFILE
|
|
fi
|
|
|
|
elif [ $SEL = $SEL_HPICMP ]; then
|
|
# There is no concept of snmpwalk here
|
|
# Packet size is hard coded: 56 bytes
|
|
# Timeout is hard coded: 2 seconds
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.7.1.56.2.${IP_MACHINE}.0 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_HPAUTH ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.11.2.13.4 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_SGI ]; then
|
|
WALK=$SGI_WALK
|
|
$WALK $HOST $COMM .1.3.6.1.4.1.59 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIB2_SYS ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.1 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIB2_IF ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.2 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIB2_AT ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.3 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIB2_IP ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIB2_IP_SCALARS ]; then
|
|
WALK=$SNMPGET # Override
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.1.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.2.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.3.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.4.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.5.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.6.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.7.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.8.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.9.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.10.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.11.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.12.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.13.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.14.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.15.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.16.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.17.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.18.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.19.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.23.0 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIB2_IP_ADDRTBL ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.20 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIB2_IP_ROUTETBL ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.21 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIB2_IP_ATTBL ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.4.22 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIB2_ICMP ]; then
|
|
if [ $WALK = $SNMPGET ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.1.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.2.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.3.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.4.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.5.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.6.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.7.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.8.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.9.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.10.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.11.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.12.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.13.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.14.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.15.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.16.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.17.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.18.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.19.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.20.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.21.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.22.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.23.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.24.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.25.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5.26.0 | tee -a $DATAFILE
|
|
else
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.5 | tee -a $DATAFILE
|
|
fi
|
|
|
|
elif [ $SEL = $SEL_MIB2_TCP ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIB2_TCP_SCALARS ]; then
|
|
WALK=$SNMPGET # Override
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.1.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.2.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.3.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.4.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.5.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.6.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.7.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.8.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.9.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.10.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.11.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.12.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.14.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.15.0 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIB2_TCP_CONNTBL ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.6.13 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIB2_UDP ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.7 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIB2_UDP_SCALARS ]; then
|
|
WALK=$SNMPGET # Override
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.7.1.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.7.2.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.7.3.0 | tee -a $DATAFILE
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.7.4.0 | tee -a $DATAFILE
|
|
|
|
elif [ $SEL = $SEL_MIB2_UDP_LISTTBL ]; then
|
|
$WALK $HOST $COMM .1.3.6.1.2.1.7.5 | tee -a $DATAFILE
|
|
#
|
|
# GJB -- Add a new "elif" statement above applying to the new MIB group
|
|
#
|
|
fi
|
|
|
|
# ---------------------------------------------------------------
|
|
# Print statistics on screen and in file if applicable
|
|
# ---------------------------------------------------------------
|
|
COUNT=`expr $COUNT + 1`
|
|
if [ $MAX_COUNT -gt 1 ]; then
|
|
echo "-----------------------------------------------"
|
|
echo $PREFIX COUNT=$COUNT
|
|
echo "-----------------------------------------------"
|
|
fi
|
|
|
|
if [ $SAVE_STATS -gt 0 ]; then
|
|
INT_COUNT=`expr $COUNT / $SAVE_STATS`
|
|
MODULO=`expr $COUNT - $INT_COUNT \* $SAVE_STATS`
|
|
else
|
|
MODULO=1
|
|
fi
|
|
|
|
if [ $MODULO -eq 0 -o $COUNT -ge $MAX_COUNT ]; then
|
|
echo " "
|
|
if [ $PRINT_STATS -eq 1 ]; then
|
|
ps -elf | grep snmpd | grep -v grep >> $STATSFILE
|
|
echo $PREFIX Ran $WALK on $SYSTEM test $COUNT times >> $STATSFILE
|
|
echo $PREFIX "Ended at " `date` >> $STATSFILE
|
|
echo $PREFIX Data saved in file: $DATAFILE >> $STATSFILE
|
|
fi
|
|
echo " " >> $STATSFILE
|
|
if [ $PRINT_STATS -eq 1 ]; then
|
|
cat $STATSFILE
|
|
fi
|
|
echo $MARKER
|
|
fi
|
|
|
|
if [ $COUNT -ge $MAX_COUNT ]; then
|
|
echo $MARKER >> $TMP_FILE
|
|
break
|
|
fi
|
|
|
|
sleep $SLEEP
|
|
done
|
|
done
|
|
|
|
# ---------------------------------------------------------------
|
|
# Cleanup at the end of the work
|
|
# ---------------------------------------------------------------
|
|
DFLT_VAL=n
|
|
echo "Do you want to remove the datafile? [$DFLT_VAL] "
|
|
read ANS
|
|
|
|
if [ x$ANS = xy -o x$ANS = xY ]; then
|
|
rm -f $DATAFILE
|
|
Echo Removed $DATAFILE
|
|
fi
|
|
exit 0
|
|
|
|
|