gentcucci
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:9k
源码类别:

SNMP编程

开发平台:

C/C++

  1. #!/bin/bash
  2. ###############################################################################
  3. # gentcucci - Generate Total Control User Count (and temp) Config and Index
  4. #             (pronounced like Gent Cookie) an MRTG Tool
  5. #
  6. # Version 1.0.0
  7. #
  8. # Copyright and written by Kevin Benton, 1999.
  9. #
  10. # Please be sure that if you choose to use this code that you let Tobi or
  11. # myself know that it's useful to you.  Tobi - thanks for writing MRTG and
  12. # making it freely available to those of us who weren't quite so creative.
  13. #
  14. # NOTE 1 - At the time of this writing, we've been using this script for over
  15. # a year and it's worked like a champ.  Don't let the version number fool
  16. # you - this stuff is tried and tested.
  17. #
  18. # NOTE 2 - Please be sure to pick the target method below.  Look for
  19. # "INTENTIONAL ERROR" in this file, uncomment the appropriate line and delete
  20. # the two "error" lines as directed.
  21. #
  22. # NOTE 3 - This could have been written in Perl to make it a lot faster, but at
  23. # the time I wrote it, I didn't know enough Perl to do it.  I certainly didn't
  24. # feel like spending the time to write it in C.  I may soon rewrite this
  25. # entire script in Perl not only to make it faster, but to clean things as far
  26. # as temp files go and what not.
  27. #
  28. # NOTE 4 - tcf2mrtg returns the number of users on-line for a particular
  29. # target.  This works on both ARCs and NetServers and gives us the ability to
  30. # split apart DSP's.  It can of course be adapted to whatever your platform
  31. # needs require.  If you only need data for the HARC aggregated together, use
  32. # the MIB .1.3.6.1.4.1.429.4.2.1.10.0 or whatever is current for the HARC code
  33. # you're using.
  34. ###############################################################################
  35. ###############################################################################
  36. # store in users index file
  37. stf() {
  38.   echo "$1" >>$TEMP_FILE
  39. }
  40. ###############################################################################
  41. # store in temperature index file
  42. stfd() {
  43.   echo "$1" >>$TEMP_FILE2
  44. }
  45. ###############################################################################
  46. # store in temperature config
  47. stod() {
  48.   echo "$1" >>$degree_file
  49. }
  50. ###############################################################################
  51. # store in users config
  52. stou() {
  53.   echo "$1" >>$output_file
  54. }
  55. ###############################################################################
  56. ########################## CONFIGURATION PARAMETERS ###########################
  57. #    output_dir is where MRTG will be storing configs.  A directory www should
  58. #    exist under that with the directories tcusercount and tcdegree below that.
  59. export output_dir=/usr/local/mrtg-2.8.12/local-config
  60. #    output_file is the MRTG user count config file.
  61. export output_file=$output_dir/mrtg.tcusercount.cfg
  62. #    degree_file is the MRTG chassis temperature config file.
  63. export degree_file=$output_dir/mrtg.tcdegree.cfg
  64. #    ro_comm is the read only SNMP community to use to grab data with.
  65. export ro_comm=public
  66. ########################## CONFIGURATION PARAMETERS ###########################
  67. export TEMP_FILE=/tmp/gentcuc.$$
  68. export TEMP_FILE2=/tmp/gentcuc.$$.2
  69. rm -f $TEMP_FILE 2>/dev/null >/dev/null
  70. trap "rm -f $TEMP_FILE $TEMP_FILE2 2>/dev/null >/dev/null ; exit" 1 2 15
  71. touch $TEMP_FILE
  72. index=${output_dir}/www/tcusercount/index.htm
  73. bigindex=${output_dir}/www/tcusercount/bigindex.htm
  74. degreeindex=${output_dir}/www/tcdegree/index.htm
  75. bigdegreeindex=${output_dir}/www/tcdegree/bigindex.htm
  76. # Create mrtg.tcusercount.cfg header
  77. cat >$output_file <<SH_EOF1
  78. ##################################################################
  79. # CAUTION: This file is automatically generated.  Do not edit.   #
  80. #    Changes should be made in gwcs.list only.             #
  81. ##################################################################
  82. Workdir:    $output_dir
  83. Refresh:      300
  84. Interval:     5
  85. WriteExpires: Yes
  86. Directory[^]: www/tcusercount/
  87. PageTop[^]: <H1>
  88. PageTop[$]: Total Control Chassis User Count</H1>
  89. Options[^]: gauge noinfo
  90. YLegend[^]: Users On
  91. ShortLegend[^]: Users
  92. Title[$]: Total Control Chassis User Count
  93. XZoom[^]: 2.0
  94. YZoom[^]: 2.0
  95. SH_EOF1
  96. # Create mrtg.tcdegree.cfg header
  97. cat >$degree_file <<SH_EOF2
  98. ##################################################################
  99. # CAUTION: This file is automatically generated.  Do not edit.   #
  100. #    Changes should be made in nmcs.list only.             #
  101. ##################################################################
  102. Workdir:    $output_dir
  103. Refresh:      300
  104. Interval:     5
  105. WriteExpires: Yes
  106. Directory[^]: www/tcdegree/
  107. PageTop[^]: <H1>
  108. PageTop[$]: Total Control Chassis Temperature</H1>
  109. Options[^]: gauge noinfo nopercent
  110. YLegend[^]: Fahrenheit
  111. ShortLegend[^]: Temp
  112. Title[$]: Total Control Chassis Temperature
  113. XZoom[^]: 2.0
  114. YZoom[^]: 2.0
  115. SH_EOF2
  116. # Create master index temp file
  117. stf "<HTML>"
  118. stf "<HEAD><TITLE>Total Control SED_REPLACE_WITH_NAME</TITLE></HEAD>"
  119. stf "<BODY BGCOLOR=WHITE>"
  120. stf "<H1>Total Control SED_REPLACE_WITH_NAME</H1>"
  121. stf "Updated `date`<P>"
  122. stf "<A HREF="SED_REPLACE_WITH_INDEX.HTM">Click here for SED_REPLACE_WITH_SIZE size images</A><BR>"
  123. stf "<TABLE BORDER>"
  124. # Process into mrtg.tcusercount.cfg and master user count index from gwcs.list
  125. while read line
  126. do
  127.   if echo "$line" | egrep '^#' >/dev/null 2>/dev/null
  128.   then
  129.     continue
  130.   fi
  131.   if [ -z "$line" ]
  132.   then
  133.     continue
  134.   fi
  135.   target="`echo "$line" | cut -d: -f1 | sed -e 's/+/ /g'`"
  136.   tag="`echo "$line" |         
  137.         cut -d: -f1 |            
  138.         sed -e 's/+/_/g' |       
  139.         sed -e 's/_.*@/_/g' |  
  140.         cut -d@ -f2`"
  141.   title="`echo "$line" | cut -d: -f2`"
  142.   maxb="`echo "$line" | cut -d: -f3`"
  143.   absm="`echo "$line" | cut -d: -f4`"
  144. INTENTIONAL ERROR: YOU MUST PICK 1 OF THE 2 TARGETS BELOW AND DELETE THIS LINE
  145. #  stou "Target[$tag]: `/usr/local/mrtg-2.8.12/local-config/tcf2mrtg "$target"`"
  146. #  stou "Target[$tag]: .1.3.6.1.4.1.429.4.2.1.10.0:${ro_comm}@$target"
  147. INTENTIONAL ERROR: YOU MUST PICK ONE OF THE TARGETS ABOVE AND DELETE THIS LINE
  148.   stou "Title[$tag]: $title"
  149.   stou "PageTop[$tag]: $title"
  150.   if [ ! "$absm" = "0" ]
  151.   then
  152.     stou "AbsMax[$tag]: $absm"
  153.   fi
  154.   stou "MaxBytes[$tag]: $maxb"
  155.   stou "WithPeak[$tag]: ymwd"
  156.   stou ""
  157.   stf "  <TR>"
  158.   stf "    <TD ROWSPAN=2>"
  159.   stf "        <CENTER><A HREF="$tag.html">$title</A><BR>"
  160.   stf "        `/home/httpd/cgi-bin/tcnowstat "$tag" "$maxb"`<BR>"
  161.   stf "         Potential Users: $maxb</CENTER>"
  162.   stf "    <TD>Today<BR>5 Min</TD>"
  163.   stf "    <TD>"
  164.   stf "      <IMG SRC="$tag-day.png"   SED_REPLACE_WITH_PICSIZE>"
  165.   stf "    </TD>"
  166.   stf "  </TR>"
  167.   stf "  <TR>"
  168.   stf "    <TD>This Week<BR>30 Min</TD>"
  169.   stf "    <TD>"
  170.   stf "      <IMG SRC="$tag-week.png"  SED_REPLACE_WITH_PICSIZE>"
  171.   stf "    </TD>"
  172.   stf "  </TR>"
  173. done <gwcs.list
  174. stfd "<HTML>"
  175. stfd "<HEAD><TITLE>Total Control SED_REPLACE_WITH_NAME</TITLE></HEAD>"
  176. stfd "<BODY BGCOLOR=WHITE>"
  177. stfd "<H1>Total Control SED_REPLACE_WITH_NAME</H1>"
  178. stfd "Updated `date`<P>"
  179. stfd "<A HREF="SED_REPLACE_WITH_INDEX.HTM">Click here for SED_REPLACE_WITH_SIZE size images</A><BR>"
  180. stfd "<TABLE BORDER>"
  181. # Process into mrtg.tcusercount.cfg and master user count index from gwcs.list
  182. while read line
  183. do
  184.   if echo "$line" | egrep '^#' >/dev/null 2>/dev/null
  185.   then
  186.     continue
  187.   fi
  188.   if [ -z "$line" ]
  189.   then
  190.     continue
  191.   fi
  192.   name="`echo "$line" | cut -d: -f1 | sed -e 's/+/ /g'`"
  193.   tag="`echo "$line" | cut -d: -f1 | sed -e s/+/_/g`"
  194.   title="`echo "$line" | cut -d: -f2`"
  195.   stod "##################################################################"
  196.   stod "Target[$tag]: .1.3.6.1.4.1.429.1.2.2.5.0&.1.3.6.1.4.1.429.1.2.2.5.0:public@$name * 1.8 + 32"
  197.   stod "Title[$tag]: $title"
  198.   stod "PageTop[$tag]: $title"
  199.   stod "MaxBytes[$tag]: 200"
  200.   stfd "    <TD ROWSPAN=2>"
  201.   stfd "        <CENTER><A HREF="$tag.html">$title</A><BR>"
  202.   stfd "        `/home/httpd/cgi-bin/tcnowtemp "$tag"`</CENTER>"
  203.   stfd "    <TD>Today<BR>5 Min</TD>"
  204.   stfd "    <TD>"
  205.   stfd "      <IMG SRC="$tag-day.png"   SED_REPLACE_WITH_PICSIZE>"
  206.   stfd "    </TD>"
  207.   stfd "  </TR>"
  208.   stfd "  <TR>"
  209.   stfd "    <TD>This Week<BR>30 Min</TD>"
  210.   stfd "    <TD>"
  211.   stfd "      <IMG SRC="$tag-week.png"  SED_REPLACE_WITH_PICSIZE>"
  212.   stfd "    </TD>"
  213.   stfd "  </TR>"
  214. done <nmcs.list
  215. # close the indexes up tight
  216. stf "</TABLE></BODY></HTML>"
  217. stfd "</TABLE></BODY></HTML>"
  218. # create normal and big indexes for user count and temperature.
  219. cat $TEMP_FILE | sed -e 's/SED_REPLACE_WITH_INDEX.HTM/bigindex.htm/g'   | 
  220.                  sed -e 's/SED_REPLACE_WITH_SIZE/double/g'              | 
  221.                  sed -e 's/SED_REPLACE_WITH_NAME/User Count Analysis/g' | 
  222.                  sed -e 's/SED_REPLACE_WITH_PICSIZE//g' >$index
  223. cat $TEMP_FILE | sed -e 's/SED_REPLACE_WITH_INDEX.HTM/index.htm/g'      | 
  224.                  sed -e 's/SED_REPLACE_WITH_SIZE/normal/g'              | 
  225.                  sed -e 's/SED_REPLACE_WITH_NAME/User Count Analysis/g' | 
  226.          sed -e 's/SED_REPLACE_WITH_PICSIZE/WIDTH=1000 HEIGHT=270/g' >$bigindex
  227. cat $TEMP_FILE2 | sed -e 's/SED_REPLACE_WITH_INDEX.HTM/bigindex.htm/g'   | 
  228.                   sed -e 's/SED_REPLACE_WITH_SIZE/double/g'              | 
  229.                   sed -e 's/SED_REPLACE_WITH_NAME/Chassis Temperature/g' | 
  230.                   sed -e 's/SED_REPLACE_WITH_PICSIZE//g' >$degreeindex
  231. cat $TEMP_FILE2 | sed -e 's/SED_REPLACE_WITH_INDEX.HTM/index.htm/g'      | 
  232.                   sed -e 's/SED_REPLACE_WITH_SIZE/normal/g'              | 
  233.                   sed -e 's/SED_REPLACE_WITH_NAME/Chassis Temperature/g' | 
  234.    sed -e 's/SED_REPLACE_WITH_PICSIZE/WIDTH=1000 HEIGHT=270/g' >$bigdegreeindex
  235. rm $TEMP_FILE $TEMP_FILE2