1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
#! /bin/sh -f
#
# Variables: (* = exported)
# *SNMP_TMPDIR: place to put files used in testing.
# SNMP_TESTDIR: where the test scripts are kept.
# *SNMP_PERSISTENT_FILE: where to store the agent's persistent information
# (XXX: this should be specific to just the agent)
#
# Only allow ourselves to be eval'ed once
#
if [ "x$TESTCONF_SH_EVALED" != "xyes" ]; then
TESTCONF_SH_EVALED=yes
#
# Set up an NL suppressing echo command
#
case "`echo 'x\c'`" in
'x\c')
ECHO() { echo -n $*; }
;;
x)
ECHO() { echo $*\\c; }
;;
*)
echo "I don't understand your echo command ..."
exit 1
;;
esac
#
# how verbose should we be (0 or 1)
#
if [ "x$SNMP_VERBOSE" = "x" ]; then
SNMP_VERBOSE=0
export SNMP_VERBOSE
fi
if [ "x$MIBDIRS" = "x" ]; then
if [ "x$SNMP_PREFER_NEAR_MIBS" = "x1" ]; then
MIBDIRS=${SNMP_BASEDIR}/../mibs
export MIBDIRS
fi
fi
# Set up the path to the programs we want to use.
if [ "x$SNMP_PATH" = "x" ]; then
PATH=../agent:../apps:../../agent:../../apps:$PATH
export PATH
SNMP_PATH=yes
export SNMP_PATH
fi
# Set up temporary directory
if [ "x$SNMP_TMPDIR" = "x" -a "x$SNMP_HEADERONLY" != "xyes" ]; then
if [ "x$testnum" = "x" ] ; then
testnum=1
fi
SNMP_TMPDIR="/tmp/snmp-test-$testnum-$$"
export SNMP_TMPDIR
if [ -d $SNMP_TMPDIR ]; then
echo "$0: ERROR: $SNMP_TMPDIR already existed."
exit 1;
fi
mkdir $SNMP_TMPDIR
fi
if [ "x$SNMP_SAVE_TMPDIR" = "x" ]; then
SNMP_SAVE_TMPDIR="no"
export SNMP_SAVE_TMPDIR
fi
SNMP_TESTDIR="$SNMP_BASEDIR/tests"
SNMP_CONFIG_FILE="$SNMP_TMPDIR/snmpd.conf"
SNMPTRAPD_CONFIG_FILE="$SNMP_TMPDIR/snmptrapd.conf"
SNMP_SNMPTRAPD_LOG_FILE="$SNMP_TMPDIR/snmptrapd.log"
SNMP_SNMPTRAPD_PID_FILE="$SNMP_TMPDIR/snmptrapd.pid"
SNMP_SNMPD_PID_FILE="$SNMP_TMPDIR/snmpd.pid"
SNMP_SNMPD_LOG_FILE="$SNMP_TMPDIR/snmpd.log"
SNMP_PERSISTENT_FILE="$SNMP_TMPDIR/persistent-store.conf"
export SNMP_PERSISTENT_FILE
## Setup default flags and ports iff not done
if [ "x$SNMP_FLAGS" = "x" ]; then
SNMP_FLAGS="-d"
fi
if test -x /bin/netstat ; then
NETSTAT=/bin/netstat
elif test -x /usr/bin/netstat ; then
NETSTAT=/usr/bin/netstat
elif test -x /usr/sbin/netstat ; then
# e.g. Tru64 Unix
NETSTAT=/usr/sbin/netstat
elif test -x /usr/etc/netstat ; then
# e.g. IRIX
NETSTAT=/usr/etc/netstat
else
NETSTAT=""
fi
if [ "x$SNMP_SNMPD_PORT" = "x" ]; then
SNMP_SNMPD_PORT="8765"
MAX_RETRIES=3
if test -x "$NETSTAT" ; then
if test -z "$RANDOM"; then
RANDOM=2
fi
while :
do
IN_USE=`$NETSTAT -a -n 2>/dev/null | grep "[\.:]$SNMP_SNMPD_PORT "`
if [ $? -eq 0 ]; then
#ECHO "Port $SNMP_SNMPD_PORT in use:"
#echo "->$IN_USE"
SNMP_SNMPD_PORT=`expr $SNMP_SNMPD_PORT + \( $RANDOM % 100 \)`
else
#echo "Using port $SNMP_SNMPD_PORT"
break
fi
MAX_RETRIES=`expr $MAX_RETRIES - 1`
if [ $MAX_RETRIES -eq 0 ]; then
echo "ERROR: Could not find available port."
exit 255
fi
done
fi
fi
if [ "x$SNMP_SNMPTRAPD_PORT" = "x" ]; then
SNMP_SNMPTRAPD_PORT=`expr $SNMP_SNMPD_PORT - 1`
fi
if [ "x$SNMP_TRANSPORT_SPEC" = "x" ];then
SNMP_TRANSPORT_SPEC="udp"
fi
if [ "x$SNMP_TEST_DEST" = "x" -a $SNMP_TRANSPORT_SPEC != "unix" ];then
SNMP_TEST_DEST="localhost:"
fi
export SNMP_FLAGS SNMP_SNMPD_PORT SNMP_SNMPTRAPD_PORT
# Make sure the agent doesn't parse any config file but what we give it.
# this is mainly to protect against a broken agent that doesn't
# properly handle combinations of -c and -C. (since I've broke it before).
SNMPCONFPATH="$SNMP_TMPDIR/does-not-exist"
export SNMPCONFPATH
fi # Only allow ourselves to be eval'ed once
|