make-mrtg.cfg.awk
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:8k
源码类别:

SNMP编程

开发平台:

C/C++

  1. BEGIN { 
  2. #
  3. ## Global Variables Initialization (Feel you free to edit as needed)
  4. #
  5. #
  6.  mrtg_var_WorkDir = "/usr/local/mrtg/contrib/net-hosts" # it will be inserted into MRTG config file
  7.  mrtg_var_IconDir = "http://www.your.domain/img/" # it will be inserted into MRTG config file and it will be used on HTML documents
  8.  mrtg_var_Interval = "5" # it will be inserted into MRTG config file
  9.  mrtg_executable = "/usr/local/mrtg/mrtg" # MRTG executable file with full path
  10.  mrtg_nethosts_cfg = "/usr/local/mrtg/contrib/net-hosts/mrtg-awk.cfg" # MRTG config file for net-hosts
  11.  nethosts_internet_path = "/usr/local/mrtg/contrib/net-hosts" # the path for internet IPs file (without / at the end)
  12.  nethosts_css_file = "http://www.your.domain/css/mrtg/net-hosts.css" # CSS File definition for HTML documents
  13.  nethosts_maintainer_email = "Your Name <your@email.address>" # Maintainer email address
  14. #
  15. ## Start index number for array
  16. #
  17.  lines = 1
  18.  startdate = systime()
  19.  dataexpirarii = startdate+300 # Expire date for HTML documents, +5 min (mrtg_var_Interval)
  20.  dataexp = strftime("%c %Z", dataexpirarii)
  21.  dataexpirarii = strftime("%d-%m-%Y %T %Z",dataexpirarii) 
  22.  system((">" mrtg_nethosts_cfg))
  23. }
  24. {
  25. #
  26. # The state from fping for every IP is inserted into array
  27.  state=$2$3
  28.  ip=$1
  29.  array[lines,1] = ip
  30.  array[lines,2] = state
  31.  lines++
  32. }
  33. END {
  34.  close(FILENAME)
  35. #
  36. ## Variables Definition
  37. #
  38.  header="<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> 
  39. <HTML> 
  40. <HEAD> 
  41. <META HTTP-EQUIV="Refresh" CONTENT="300"> 
  42. <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
  43. <META HTTP-EQUIV="Expires" CONTENT=""dataexp""> 
  44. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> 
  45. <link rel="STYLESHEET" type="text/css" href="" nethosts_css_file ""> 
  46. <TITLE>Internet Conection Statistics Overview</TITLE> 
  47. </HEAD> 
  48. <BODY> 
  49. <H1 CLASS="h1"><A HREF="javascript:history.back();">Main Index</A> +++ Internet Conection Statistics Overview</H1>"
  50.  footer="<BR></BODY></HTML>"
  51. #
  52.  lastmod=("<CENTER><SMALL>Last modified: <FONT STYLE="color: darkblue;">" strftime("%d-%m-%Y %T %Z",startdate) "</FONT>.</SMALL></CENTER>")
  53.  expire="<CENTER><SMALL>Expire on: <FONT STYLE="color: darkblue;">"dataexpirarii"</FONT>.</SMALL></CENTER>"
  54.  tablestart="<TABLE BORDER=0 WIDTH="100%"> 
  55. <TR> 
  56. <TH CLASS="pth">Index</TH> 
  57. <TH CLASS="pth">Name</TH> 
  58. <TH CLASS="pth">IP</TH> 
  59. <TH CLASS="pth">Status</TH> 
  60. <TH CLASS="pth">Last Changed On</TH> 
  61. </TR>"
  62.  tableend="</table><BR>"
  63.  startraw="<TR>"
  64.  endrow="</TR>"
  65.  startcell="<TD CLASS="ptb">"
  66.  endcell="</TD>"
  67.  startlongcell="<TD CLASS="ptb" COLSPAN="5">"
  68.  imgdown=("<IMG SRC="" mrtg_var_IconDir "redball.gif">")
  69.  imgup=("<IMG SRC="" mrtg_var_IconDir "grnball.gif">")
  70.  pstart="<P CLASS="ptb">"
  71.  pend="</P>"
  72. #
  73. ##
  74.  print header > (mrtg_var_WorkDir "/internet.html")
  75.  print tablestart >> (mrtg_var_WorkDir "/internet.html")
  76. #
  77.  print ("WorkDir: " mrtg_var_WorkDir) > mrtg_nethosts_cfg
  78.  print ("IconDir: " mrtg_var_IconDir) > mrtg_nethosts_cfg
  79.  print ("Interval: " mrtg_var_Interval) > mrtg_nethosts_cfg
  80.  print "nn#----------------------------------------------------------------------------nn" > mrtg_nethosts_cfg
  81. #
  82. ##
  83. #
  84.  xx = 1
  85.  kontor = 0
  86.  succesiv = "0"
  87. ## Fping results processing
  88. #
  89.  while ((getline line < (nethosts_internet_path "/internet")) > 0 ){
  90.   split(line, l, ":")
  91.   for ( i = 1 ; i < lines; i++ ){
  92.    if ( array[i, 1] == l[1] ){
  93.     break
  94.    }
  95.   }
  96.   if ( l[4] == 1 ){
  97.    last_state = "isalive"
  98.   }
  99.   else {
  100.    last_state = "isdad"
  101.   }
  102.   myfun(xx, i, l[2], l[3], last_state)
  103.   i++
  104.   xx++
  105.  }
  106.  close((nethosts_internet_path "/internet"))
  107. #
  108. ##
  109. #
  110.  print tableend >> (mrtg_var_WorkDir "/internet.html")
  111.  print lastmod >> (mrtg_var_WorkDir "/internet.html")
  112.  print expire >> (mrtg_var_WorkDir "/internet.html")
  113.  print footer >> (mrtg_var_WorkDir "/internet.html")
  114. #
  115. ##
  116. #
  117.  system(("mv -f " nethosts_internet_path "/tmpinternet " nethosts_internet_path "/internet"))
  118.  system((mrtg_executable " " mrtg_nethosts_cfg " 2> /dev/null"))
  119. }
  120. function myfun(f_rindex, f_index, f_name, f_olddate, f_last_state)
  121. {
  122.  if( ! f_olddate ){
  123.   f_olddate = startdate
  124.  }
  125. #
  126.  if(array[f_index, 2] == "isalive"){
  127.   statew = 1
  128.   succesiv = "0"
  129.   kontor = 0
  130.   if ( f_last_state == array[f_index, 2] ) {
  131.    datew = f_olddate
  132.   }
  133.   else {
  134.    datew = startdate
  135.   }
  136.   print array[f_index, 1]":"f_name":"datew":"statew > (nethosts_internet_path "/tmpinternet")
  137.   print startrow startcell f_rindex endcell > (mrtg_var_WorkDir "/internet.html")
  138.   print (startcell "<A HREF="" tolower(f_name) ".html">" f_name "</A>" endcell) > (mrtg_var_WorkDir "/internet.html")
  139.   print startcell array[f_index, 1] endcell > (mrtg_var_WorkDir "/internet.html") 
  140.   print startcell imgup endcell > (mrtg_var_WorkDir "/internet.html")
  141.   print startcell strftime("%c %Z", datew) endcell > (mrtg_var_WorkDir "/internet.html") 
  142.   print endrow > (mrtg_var_WorkDir "/internet.html")
  143.   print "Target[" f_name "]: `echo | awk '{ print "1\n1\n..., last changed on: " strftime("%c %Z", datew) "\n" array[f_index, 1] "\n"; exit }'`" > mrtg_nethosts_cfg
  144.  }
  145.  else {
  146.   statew = 0
  147.   if( succesiv == "0" ){
  148.    succesiv = "1"
  149.   }
  150.   kontor++
  151.   if ( f_last_state == array[f_index, 2] ) {
  152.    datew = f_olddate
  153.   }
  154.   else {
  155.    datew = startdate
  156.   }
  157.   print array[f_index, 1]":"f_name":"datew":"statew > (nethosts_internet_path "/tmpinternet")
  158.   print startrow startcell f_rindex endcell > (mrtg_var_WorkDir "/internet.html")
  159.   print (startcell "<A HREF="" tolower(f_name) ".html">" f_name "</A>" endcell) > (mrtg_var_WorkDir "/internet.html")
  160.   print startcell array[f_index, 1] endcell > (mrtg_var_WorkDir "/internet.html") 
  161.   print startcell imgdown endcell > (mrtg_var_WorkDir "/internet.html")
  162.   print startcell strftime("%c %Z", datew) endcell > (mrtg_var_WorkDir "/internet.html") 
  163.   print endrow > (mrtg_var_WorkDir "/internet.html")
  164.   print "Target[" f_name "]: `echo | awk '{ print "0\n0\n..., last changed on: " strftime("%c %Z", datew) "\n" array[f_index, 1] "\n"; exit }'`" > mrtg_nethosts_cfg
  165.  } 
  166.   print "Title[" f_name "]: " f_name > mrtg_nethosts_cfg
  167.   print "MaxBytes[" f_name "]: 1" > mrtg_nethosts_cfg
  168.   print "AbsMax[" f_name "]: 1" > mrtg_nethosts_cfg
  169.   print ("AddHead[" f_name "]: <link rel="STYLESHEET" type="text/css" href="" nethosts_css_file "">") > mrtg_nethosts_cfg
  170.   print ("PageTop[" f_name "]: <H1 CLASS="h1"><A HREF="javascript:history.back();"><IMG SRC="" mrtg_var_IconDir "cubprev.gif" BORDER="0"></A> Connection State for&nbsp;&nbsp;&nbsp;<CODE><B>" f_name "</B></CODE>") > mrtg_nethosts_cfg
  171.   print " </H1>" > mrtg_nethosts_cfg
  172.   print " <TABLE>" > mrtg_nethosts_cfg
  173.   print "   <TR><TD CLASS="ptb">System:</TD><TD CLASS="pth"><B>" f_name " (" array[f_index, 1] ")</B></TD></TR>" > mrtg_nethosts_cfg
  174.   print ("   <TR><TD CLASS="ptb">Maintainer:</TD><TD CLASS="pth"><B>" nethosts_maintainer_email "</B></TD></TR>") > mrtg_nethosts_cfg
  175.   print "   <TR><TD CLASS="ptb">Service:</TD><TD CLASS="pth"><B>Internet Connection</B></TD></TR>" > mrtg_nethosts_cfg
  176.   print "   <TR><TD CLASS="ptb">IP:</TD><TD CLASS="pth"><B>" f_name " (" array[f_index, 1] ")</B></TD></TR>" > mrtg_nethosts_cfg
  177.   print "   <TR><TD CLASS="ptb">Last Changed On:</TD><TD CLASS="pth"><B>" strftime("%c %Z", datew) "</B></TD></TR>" > mrtg_nethosts_cfg
  178.   print "  </TABLE>" > mrtg_nethosts_cfg
  179.   print "Supress[" f_name "]: y" > mrtg_nethosts_cfg
  180.   print "LegendI[" f_name "]: used" > mrtg_nethosts_cfg
  181.   print "LegendO[" f_name "]: " > mrtg_nethosts_cfg
  182.   print "Legend1[" f_name "]: used " > mrtg_nethosts_cfg
  183.   print "Legend2[" f_name "]:  " > mrtg_nethosts_cfg
  184.   print "YLegend[" f_name "]: used " > mrtg_nethosts_cfg
  185.   print "ShortLegend[" f_name "]: used " > mrtg_nethosts_cfg
  186.   print "Options[" f_name "]: gauge" > mrtg_nethosts_cfg
  187.   print "YTics[" f_name "]: 1"  > mrtg_nethosts_cfg
  188.   print "nn#-------------------nn" > mrtg_nethosts_cfg
  189. }