net-snmp-config.in
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:16k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. #!/bin/sh
  2. #
  3. # $Id: net-snmp-config.in,v 5.32.2.7 2005/10/12 21:39:02 tanders Exp $
  4. #
  5. # this shell script is designed to merely dump the configuration
  6. # information about how the net-snmp package was compiled.  The
  7. # information is particularily useful for applications that need to
  8. # link against the net-snmp libraries and hence must know about any
  9. # other libraries that must be linked in as well.
  10. check_build_dir()
  11. {
  12.       build_dir=$1
  13.       if test "x$build_dir" = "x" ; then
  14.          echo "You must specify a build directory."
  15.          exit 1
  16.       fi
  17.       # is it the src dir?
  18.       if test -f $build_dir/net-snmp-config.in ; then
  19.          return
  20.       fi
  21.       # make sure we can find build dir
  22.       if ! test -d $build_dir/snmplib/.libs ; then
  23.          echo "$build_dir does not appear to be a build directory."
  24.          exit 1
  25.       fi
  26. }
  27. prefix=@prefix@
  28. exec_prefix=@exec_prefix@
  29. includedir=@includedir@
  30. libdir=@libdir@
  31. NSC_LDFLAGS="@LDFLAGS@"
  32. NSC_INCLUDEDIR=${includedir}
  33. NSC_LIBDIR=-L${libdir}
  34. NSC_LIBS="@LIBS@ @WRAPLIBS@"
  35. NSC_AGENTLIBS="@AGENTLIBS@ @WRAPLIBS@ @PERLLDOPTS@"
  36. NSC_PREFIX=$prefix
  37. NSC_EXEC_PREFIX=$exec_prefix
  38. NSC_SRCDIR=@srcdir@
  39. NSC_INCDIR=${NSC_PREFIX}/include
  40. NSC_BASE_SUBAGENT_LIBS="-lnetsnmpagent -lnetsnmphelpers -lnetsnmp"
  41. NSC_BASE_AGENT_LIBS="-lnetsnmpmibs -lnetsnmpagent -lnetsnmphelpers -lnetsnmp"
  42. NSC_SRC_LIBDIRS="agent/.libs snmplib/.libs agent/helpers/.libs"
  43. NSC_SRC_LIBDEPS="agent/.libs/libnetsnmpmibs.a agent/.libs/libnetsnmpagent.a agent/helpers/.libs/libnetsnmphelpers.a snmplib/.libs/libnetsnmp.a"
  44. if test "x$NSC_SRCDIR" = "x." ; then
  45.    NSC_SRCDIR="NET-SNMP-SOURCE-DIR"
  46. fi
  47. if test "x$1" = "x"; then
  48.   usage="yes"
  49. else
  50.   while test "x$done" = "x" -a "x$1" != "x" -a "x$usage" != "xyes"; do
  51.   case "$1" in
  52.     -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
  53.     *) optarg= ;;
  54.   esac
  55.   case $1 in
  56.     --prefix=*)
  57.       prefix=$optarg
  58.       NSC_PREFIX=${prefix}
  59.       NSC_INCLUDEDIR=${prefix}/include
  60.       NSC_LIBDIR=-L${prefix}/lib
  61.       ;;
  62.     --exec-prefix=*)
  63.       exec_prefix=$optarg
  64.       NSC_EXEC_PREFIX=${exec_prefix}
  65.       NSC_LIBDIR=-L${exec_prefix}/lib
  66.       ;;
  67.     --debug-tokens|--deb*|--dbg*)
  68.       echo "find $NSC_SRCDIR -name "*.c" -print | xargs grep DEBUGMSGT | grep \" | cut -f 2 -d\" | sort -u"
  69.       if test "x$NSC_SRCDIR" != "xNET-SNMP-SOURCE-DIR" ; then
  70.         /usr/bin/find $NSC_SRCDIR -name "*.c" -print | xargs grep DEBUGMSGT | grep " | cut -f 2 -d" | sort -u
  71.       fi
  72.       ;;
  73.     --indent-options|--in*)
  74.       echo "indent -orig -nbc -bap -nut -nfca `(cd $NSC_INCDIR/net-snmp; perl -n -e 'print "-T $1 " if (/}s*(netsnmp_w+)s*;/);' */*.h)`"
  75.       ;;
  76.     --configure-options|--con*)
  77.       echo @CONFIGURE_OPTIONS@
  78.       ;;
  79.     --snmpd-module-list|--mod*)
  80.       echo @MODULE_LIST@
  81.       ;;
  82.     --default-mibs|--mibs|--MIBS)
  83.       echo @DEFAULT_MIBS@
  84.       ;;
  85.     --default-mibdirs|--mibdirs|--MIBDIRS)
  86.       echo @DEFAULT_MIBDIRS@
  87.       ;;
  88.     --snmpconfpath|--SNMPCONFPATH)
  89.       echo "@SNMPCONFPATH@@ENV_SEPARATOR@@SNMPSHAREPATH@@ENV_SEPARATOR@@SNMPLIBPATH@@ENV_SEPARATOR@$HOME/.snmp@ENV_SEPARATOR@@PERSISTENT_DIRECTORY@"
  90.       ;;
  91.     --persistent-directory|--persistent-dir)
  92.       echo @PERSISTENT_DIRECTORY@
  93.       ;;
  94.     #################################################### compile
  95.     --base-cflags)
  96.       echo @CFLAGS@ @CPPFLAGS@ -I${NSC_INCLUDEDIR}
  97.       ;;
  98.     --cflags|--cf*)
  99.       echo @CFLAGS@ @DEVFLAGS@ @CPPFLAGS@ -I. -I${NSC_INCLUDEDIR}
  100.       ;;
  101.     --srcdir)
  102.       echo $NSC_SRCDIR
  103.       ;;
  104.     #################################################### linking
  105.     --libdir|--lib-dir)
  106.       echo $NSC_LIBDIR
  107.       ;;
  108.     --ldflags|--ld*)
  109.       echo $NSC_LDFLAGS
  110.       ;;
  111.     --build-lib-dirs)
  112.       shift
  113.       build_dir=$1
  114.       check_build_dir $build_dir
  115.       for dir in $NSC_SRC_LIBDIRS; do
  116.           result="$result -L$build_dir/$dir"
  117.       done
  118.       echo $result
  119.       ;;
  120.     --build-lib-deps)
  121.       shift
  122.       build_dir=$1
  123.       check_build_dir $build_dir
  124.       for dir in $NSC_SRC_LIBDEPS; do
  125.           result="$result $build_dir/$dir"
  126.       done
  127.       echo $result
  128.       ;;
  129.     --build-includes)
  130.       shift
  131.       build_dir=$1
  132.       check_build_dir $build_dir
  133.       result="-I$build_dir/include"
  134.       if test "$build_dir" != "$NSC_SRCDIR" -a "$NSC_SRCDIR" != "NET-SNMP-SOURCE-DIR"
  135.       then
  136.           result="$result -I$NSC_SRCDIR/include"
  137.       fi
  138.       echo $result
  139.       ;;
  140.     #################################################### client lib
  141.     --libs)
  142.       # use this one == --netsnmp-libs + --external-libs
  143.       echo $NSC_LDFLAGS $NSC_LIBDIR -lnetsnmp $NSC_LIBS
  144.       ;;
  145.     --netsnmp-libs)
  146.       echo $NSC_LIBDIR -lnetsnmp
  147.       ;;
  148.     --external-libs)
  149.       echo $NSC_LDFLAGS $NSC_LIBS
  150.       ;;
  151.     #################################################### agent lib
  152.     --base-agent-libs)
  153.       echo $NSC_BASE_AGENT_LIBS
  154.       ;;
  155.     --base-subagent-libs)
  156.       echo $NSC_BASE_SUBAGENT_LIBS
  157.       ;;
  158.     --agent-libs)
  159.       # use this one == --netsnmp-agent-libs + --external-libs
  160.       echo $NSC_LDFLAGS $NSC_LIBDIR $NSC_BASE_AGENT_LIBS $NSC_AGENTLIBS
  161.       ;;
  162.     --netsnmp-agent-libs)
  163.       echo $NSC_LIBDIR $NSC_BASE_AGENT_LIBS
  164.       ;;
  165.     --external-agent-libs)
  166.       echo $NSC_LDFLAGS $NSC_AGENTLIBS
  167.       ;;
  168.     ####################################################
  169.     --version|--ver*)
  170.       echo @VERSION@
  171.       ;;
  172.     --help)
  173.       usage="yes"
  174.       ;;
  175.     --prefix|--pre*)
  176.       echo $NSC_PREFIX
  177.       ;;
  178.     --exec-prefix)
  179.       echo $NSC_EXEC_PREFIX
  180.       ;;
  181.     ####################################################
  182.     --create-snmpv3-user)
  183.       if @PSCMD@ | egrep ' snmpd *$' > /dev/null 2>&1 ; then
  184.          echo "Apparently at least one snmpd demon is already running."
  185.          echo "You must stop them in order to use this command."
  186.          exit 1
  187.       fi
  188.       Aalgorithm="MD5"
  189.       Xalgorithm="DES"
  190.       token=rwuser
  191.       shift
  192.       while test "x$done" = "x" -a "x$1" != "x" ; do
  193. case $1 in
  194.     -A)
  195. shift
  196. if test "x$1" = "x" ; then
  197.     echo "You must specify an authentication algorithm"
  198.     exit 1
  199. fi
  200. Aalgorithm=$1
  201. shift
  202. ;;
  203.     -X)
  204. shift
  205. if test "x$1" = "x" ; then
  206.     echo "You must specify an encryption algorithm"
  207.     exit 1
  208. fi
  209. Xalgorithm=$1
  210. shift
  211. ;;
  212.     -a)
  213. shift
  214. if test "x$1" = "x" ; then
  215.     echo "You must specify an authentication pass phrase"
  216.     exit 1
  217. fi
  218. apassphrase=$1
  219. shift
  220. ;;
  221.     -x)
  222. shift
  223. if test "x$1" = "x" ; then
  224.     echo "You must specify an encryption pass phrase"
  225.     exit 1
  226. fi
  227. xpassphrase=$1
  228. shift
  229. ;;
  230.     -ro)
  231.         token="rouser"
  232. shift
  233. ;;
  234.       -*)
  235. echo "unknown suboption to --create-snmpv3-user: $1"
  236. exit 1
  237. ;;
  238.     *)
  239.         done=1
  240. ;;
  241. esac
  242.       done
  243.       
  244.       if test "x$1" = "x" ; then
  245.           prompt=yes
  246.   echo "Enter a SNMPv3 user name to create: "
  247.   read user
  248.       else
  249.           user=$1
  250.           shift
  251.       fi
  252.       if test "x$user" = "x" ; then
  253.           echo "You must specify a user name"
  254.   exit 1
  255.       fi
  256.       if test "x$apassphrase" = "x" ; then
  257.           prompt=yes
  258.   echo "Enter authentication pass-phrase: "
  259.   read apassphrase
  260.       fi
  261.       if test "x$apassphrase" = "x" ; then
  262.           echo "You must specify an authentication pass-phrase"
  263.   exit 1
  264.       fi
  265.       if test "x$prompt" = "xyes" -a "x$xpassphrase" = "x" ; then
  266.   echo "Enter encryption pass-phrase: "
  267.   echo "  [press return to reuse the authentication pass-phrase]"
  268.   read xpassphrase
  269.       fi
  270.       outdir="@PERSISTENT_DIRECTORY@"
  271.       outfile="$outdir/snmpd.conf"
  272.       line="createUser $user $Aalgorithm "$apassphrase" $Xalgorithm $xpassphrase"
  273.       echo "adding the following line to $outfile:"
  274.       echo "  " $line
  275.       # in case it hasn't ever been started yet, start it.
  276.       if ! test -d $outdir ; then
  277.           mkdir $outdir
  278.       fi
  279.       if ! test -d $outfile ; then
  280.           touch $outfile
  281.       fi
  282.       echo $line >> $outfile
  283.       outfile="@datadir@/snmp/snmpd.conf"
  284.       line="$token $user"
  285.       echo "adding the following line to $outfile:"
  286.       echo "  " $line
  287.       if ! test -d $outfile ; then
  288.           touch $outfile
  289.       fi
  290.       echo $line >> $outfile
  291.       ;;
  292.     ####################################################
  293.     --compile-subagent)
  294.       shift
  295.       while test "x$done" = "x" -a "x$1" != "x" ; do
  296. case $1 in
  297.             --norm)
  298.         norm=1
  299.         shift
  300. ;;
  301.             --cflags)
  302.         shift
  303.         if test "x$1" = "x" ; then
  304.             echo "You must specify the extra cflags"
  305.             exit 1
  306.         fi
  307.         cflags=$1
  308.         echo "setting extra cflags: $cflags"
  309.         shift
  310. ;;
  311.             --ldflags)
  312.         shift
  313.         if test "x$1" = "x" ; then
  314.             echo "You must specify the extra ldflags"
  315.             exit 1
  316.         fi
  317.         ldflags=$1
  318.         echo "setting extra ldflags: $ldflags"
  319.         shift
  320. ;;
  321.       --*)
  322. echo "unknown suboption to --compile-subagent: $1"
  323. exit 1
  324. ;;
  325.     *)
  326.                 if test "x$outname" = "x"; then
  327.                   outname=$1
  328.                   shift
  329.                 else
  330.           done=1
  331.                 fi
  332. ;;
  333. esac
  334.       done
  335.       tmpfile=netsnmptmp.$$.c
  336.       if test -f $tmpfile; then
  337. echo "Ack.  Can't create $tmpfile: already exists"
  338. exit 1
  339.       fi
  340.       echo "generating the tmporary code file: $tmpfile"
  341.       rm -f $tmpfile
  342.       cat > $tmpfile <<EOF
  343. /* generated from net-snmp-config */
  344. #include <net-snmp/net-snmp-config.h>
  345. #ifdef HAVE_SIGNAL_H
  346. #include <signal.h>
  347. #endif /* HAVE_SIGNAL_H */
  348. #include <net-snmp/net-snmp-includes.h>
  349. #include <net-snmp/agent/net-snmp-agent-includes.h>
  350. EOF
  351.     # If we were only given a single filename
  352.     # (and no explicit output name)
  353.     # then use that as the base of the output name
  354.     #
  355.     # If we weren't even given that, then bomb out
  356.     if test "x$1" = "x"; then
  357.       if test "x$outname" = "x"; then
  358.         echo "No MIB module codefile specified"
  359.         rm -f $tmpfile
  360.         exit 1
  361.       else
  362.         cfiles=$outname
  363.         outname=`basename $cfiles | sed 's/.[co]$//'`
  364.         if test -f $outname.h; then
  365.           if grep "init_$outname" $outname.h; then
  366.             echo "  #include "$outname.h"" >> $tmpfile
  367.           fi
  368.         fi
  369.       fi
  370.     fi
  371.     # add include files
  372.     while test "$1" != ""; do
  373.       cfiles="$cfiles $1"
  374.       name=`basename $1 | sed 's/.[co]$//'`
  375.       if test -f $name.h; then
  376.         if grep "init_$name" $name.h; then
  377.           echo "  #include "$name.h"" >> $tmpfile
  378.         fi
  379.       fi
  380.       shift
  381.     done
  382.       cat >> $tmpfile <<EOF
  383. static int keep_running;
  384. RETSIGTYPE
  385. stop_server(int a) {
  386.     keep_running = 0;
  387. }
  388. int
  389. main (int argc, char **argv) {
  390.   /* print log errors to stderr */
  391.   snmp_enable_stderrlog();
  392.  /* we are a subagent */
  393.   netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1);
  394.   /* initialize tcpip, if necessary */
  395.   SOCK_STARTUP;
  396.   /* initialize the agent library */
  397.   init_agent("$outname");
  398.   /* initialize your mib code here */
  399. EOF
  400.     # add init routines
  401.     for i in $cfiles ; do
  402.       name=`basename $i | sed 's/.[co]$//'`
  403.       echo checking for init_$name in $i
  404.       if grep "init_$name" $i ; then
  405.         echo "  init_${name}();" >> $tmpfile
  406.       fi
  407.       shift
  408.     done
  409.     # finish file
  410.     cat >> $tmpfile <<EOF
  411.   /* ustMain will be used to read ustMain.conf files. */
  412.   init_snmp("$outname");
  413.   /* In case we recevie a request to stop (kill -TERM or kill -INT) */
  414.   keep_running = 1;
  415. #ifdef SIGTERM
  416.   signal(SIGTERM, stop_server);
  417. #endif
  418. #ifdef SIGINT
  419.   signal(SIGINT, stop_server);
  420. #endif
  421.   /* main loop here... */
  422.   while(keep_running) {
  423.     agent_check_and_process(1);
  424.   }
  425.   /* at shutdown time */
  426.   snmp_shutdown("$outname");
  427.   SOCK_CLEANUP;
  428.   exit(0);
  429. }
  430. EOF
  431.       if test "$?" != 0 -o ! -f "$tmpfile" ; then
  432.         echo "Ack.  Can't create $tmpfile."
  433. exit 1
  434.       fi
  435.       cmd="@CC@ $cflags @CFLAGS@ @DEVFLAGS@ -I. -I${NSC_INCLUDEDIR} -o $outname $tmpfile $cfiles $NSC_LDFLAGS $NSC_LIBDIR $NSC_BASE_AGENT_LIBS $NSC_AGENTLIBS $ldflags"
  436.       echo "running: $cmd"
  437.       `$cmd`
  438.       if test "x$norm" != "x1" ; then
  439.         echo "removing the tmporary code file: $tmpfile"
  440.         rm -f $tmpfile
  441.       else
  442.         echo "leaving the tmporary code file: $tmpfile"
  443.       fi
  444.       if test -f $outname ; then
  445.         echo "subagent program $outname created"
  446.       fi
  447.       ;;
  448.     *)
  449.       echo "unknown option $1"
  450.       usage="yes"
  451.       ;;
  452.   esac
  453.   shift
  454.   done
  455. fi
  456. if test "x$usage" = "xyes"; then
  457.   echo ""
  458.   echo "Usage:"
  459.   echo "  net-snmp-config [--cflags] [--agent-libs] [--libs] [--version]"
  460.   echo "                  ... [see below for complete flag list]"
  461.   echo ""
  462.   echo "    --version         displays the net-snmp version number"
  463.   echo "    --indent-options  displays the indent options from the Coding Style"
  464.   echo "    --debug-tokens    displays a example command line to search to source"
  465.   echo "                      code for a list of available debug tokens"
  466.   echo ""
  467.   echo "  SNMP Setup commands:"
  468.   echo ""
  469.   echo "    --create-snmpv3-user [-ro] [-a authpass] [-x privpass] [-X DES]"
  470.   echo "                         [-A MD5|SHA] [username]"
  471.   echo ""
  472.   echo "  These options produce the various compilation flags needed when"
  473.   echo "  building external SNMP applications:"
  474.   echo ""
  475.   echo "    --base-cflags     lists additional compilation flags needed"
  476.   echo "    --cflags          lists additional compilation flags needed"
  477.   echo "                      (includes -I. and extra developer warning flags)"
  478.   echo ""
  479.   echo "  These options produce the various link flags needed when"
  480.   echo "  building external SNMP applications:"
  481.   echo ""
  482.   echo "    --libs            lists libraries needed for building applications"
  483.   echo "    --agent-libs      lists libraries needed for building subagents"
  484.   echo ""
  485.   echo "  These options produce various link flags broken down into parts."
  486.   echo "  (Most of the time the simple options above should be used.)"
  487.   echo ""
  488.   echo "    --libdir              path to netsnmp libraries"
  489.   echo ""
  490.   echo "    --base-agent-libs     netsnmp specific agent libraries"
  491.   echo ""
  492.   echo "    --netsnmp-libs        netsnmp specific libraries (with path)"
  493.   echo "    --netsnmp-agent-libs  netsnmp specific agent libraries (with path)"
  494.   echo ""
  495.   echo "    --ldflags             link flags for external libraries"
  496.   echo "    --external-libs       external libraries needed by netsnmp libs"
  497.   echo "    --external-agent-libs external libraries needed by netsnmp agent libs"
  498.   echo ""
  499.   echo "  These options produce various link flags used when linking an"
  500.   echo "  external application against an uninstalled build directory."
  501.   echo ""
  502.   echo "    --build-includes      include path to build/source includes"
  503.   echo "    --build-lib-dirs      link path to libraries"
  504.   echo "    --build-lib-deps      path to libraries for dependency target"
  505.   echo ""
  506.   echo "  Automatted subagent building (produces an OUTPUTNAME binary file):"
  507.   echo "  [this feature has not been tested very well yet.  use at your risk.]"
  508.   echo ""
  509.   echo "    --compile-subagent OUTPUTNAME [--norm] [--cflags flags]"
  510.   echo "                                  [--ldflags flags] mibmodule1.c [...]]"
  511.   echo ""
  512.   echo "         --norm           leave the generated .c file around to read."
  513.   echo "         --cflags flags   extra cflags to use (e.g. -I...)."
  514.   echo "         --ldflags flags  extra ld flags to use (e.g. -L... -l...)."
  515.   echo ""
  516.   echo "  Details on how the net-snmp package was compiled:"
  517.   echo ""
  518.   echo "    --configure-options   display original configure arguments"
  519.   echo "    --prefix              display the installation prefix"
  520.   echo "    --snmpd-module-list   display the modules compiled into the agent"
  521.   echo "    --default-mibs        display default list of MIBs"
  522.   echo "    --default-mibdirs     display default list of MIB directories"
  523.   echo "    --snmpconfpath        display default SNMPCONFPATH"
  524.   echo "    --persistent-directory display default persistent directory"
  525.   echo ""
  526.   exit
  527. fi