TESTCONF.sh
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:4k
源码类别:

SNMP编程

开发平台:

Unix_Linux

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