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

SNMP编程

开发平台:

C/C++

  1. #!/usr/local/bin/perl5
  2. # -*- mode: Perl -*-
  3. ##################################################################
  4. # This file controls the deletion of the MRTG monitoring from OV
  5. ##################################################################
  6. # Created by Laurie Gellatly <gellatly@one.net.au>
  7. #################################################################
  8. #
  9. # Distributed under the GNU copyleft
  10. #
  11. # $Id: ovdel,v 1.1.1.1 2002/02/26 10:16:36 oetiker Exp $
  12. #
  13. use Socket;
  14. use strict;
  15. use vars '$DEBUG';
  16. my $DEBUG = 0;
  17. my $company = "Company";
  18. my $rundir = "/opt/mrtg/run";
  19. my $webdir = "/var/opt/ns-fasttrack/docs/mrtg/";
  20. my $cronfile = "mrtgc";
  21. my $roothtml = "routers.html";
  22. my $ov_conf = "/etc/opt/OV/share/conf";
  23. my $ovconf = $ov_conf."/snmpCol.conf";
  24. my $buildhtf = "buildht";
  25. my $dnsfile = "ovmrtgc.csv";
  26. # Change the next line to " &" if all jobs are to be submitted at once
  27. my $backgrnd = " ";
  28. my($router,$sysn,$sysncfg,$sysnhtml,$head,$cnt,$at);
  29. my(@sysipnms,@mrtgc,@mrtgd,@sysnms,@ovconfd,@ovmrtgc,@buildhtt); 
  30. sub main {
  31.   $router = $ARGV[0];
  32.   die <<USAGE  unless $router;
  33. USAGE: ovdel 'router IP ADDRESS/S'
  34. EXAMPLE:  ovdel 193.21.1.2  10.21.1.2 10.21.1.1
  35. USAGE
  36.    chdir $rundir;
  37.    @sysipnms=`perl ovsysnms @ARGV`;
  38.    chomp(@sysipnms);
  39. # Figure out what needs not be monitored and change the conf file
  40.    `perl $rundir/ovcols - @ARGV > collects`;
  41.    `xnmcollect -merge collects`; 
  42. # eventaully HP may decide to remove lines using xnmcollect and then we would
  43. # not need the following loop:
  44.    open (SNMPCOL,"<".$ovconf);
  45. # This next piece of code removes any lines in snmpCol.conf that start with XC
  46.    while(<SNMPCOL>){
  47.       if (/^XC /){
  48.  next;
  49.       } else {
  50.  $ovconfd[@ovconfd] = $_;
  51.       }
  52.    }
  53.    close (SNMPCOL);
  54.    open (SNMPCOL,">".$ovconf);
  55.    for ($cnt = 0; $cnt < @ovconfd ; $cnt++){
  56.       print SNMPCOL "$ovconfd[$cnt]";
  57.    }
  58.    close (SNMPCOL);
  59.    `xnmcollect -event`;
  60. # Remove the .cfg and .ok files as no longer needed
  61.    for ($cnt = 0; $cnt < @sysipnms ; $cnt++){
  62.       ($router,$mrtgd[@mrtgd]) = split /,/, lc($sysipnms[$cnt]);
  63.       unlink($mrtgd[$cnt].".cfg",$mrtgd[$cnt].".ok");
  64.    }
  65.    @mrtgd = sort(@mrtgd);
  66. # Assumes that the mrtgc.csv file is in alpha order
  67.    open (DNSFILE,"<".$dnsfile);
  68.    $at = 0;
  69.    while(<DNSFILE>){
  70.       chomp;
  71.       $head = $_;
  72.       $sysn = lc((split /,/,$head)[1]);
  73.       if ($sysn gt $mrtgd[$at]) {
  74.  while($at < @mrtgd) { 
  75.     if($sysn le $mrtgd[++$at]){last; }
  76.  }
  77.       }
  78.       if (($sysn lt $mrtgd[$at]) || ($at >= @mrtgd)) { 
  79. #keep these lines
  80.          $mrtgc[@mrtgc] = $sysn;
  81.          $ovmrtgc[@ovmrtgc] = $head;
  82.       }
  83. #      }
  84.    }
  85.    close (DNSFILE);
  86. #Now rebuild the mrtgc.csv file
  87.    open (DNSFILE,">".$dnsfile);
  88.    for ($cnt = 0 ; $cnt < @ovmrtgc ; ++$cnt){
  89.       print DNSFILE "$ovmrtgc[$cnt]n";
  90.    }
  91.    close (DNSFILE);
  92. #Build the index by keeping the original lines.
  93.    open (BUILDHT,"<".$buildhtf);
  94.    $head = 0;
  95.    $at = 0;
  96. # This next piece of code assumes that the $buildhtf file is in alpha order
  97.    while(<BUILDHT>){
  98.       chomp;
  99.       if (/index (.*).cfg/){
  100.  $sysn = $1;
  101.  $head = $_;
  102.  if ($sysn gt $mrtgd[$at]) {
  103.     while($at < @mrtgd) { 
  104.        if($sysn le $mrtgd[++$at]){last; }
  105.     }
  106.  }
  107.          if (($sysn lt $mrtgd[$at]) || ($at >= @mrtgd)) { 
  108.     $buildhtt[@buildhtt] = $head;
  109.  }
  110.       }
  111.    }
  112.    close (BUILDHT);
  113.    open (BUILDHT,">".$buildhtf);
  114.    print BUILDHT <<ECHO;
  115. #This file builds the HTML for each device being monitored
  116. cd $rundir
  117. ECHO
  118.    for ($cnt = 0; $cnt < @buildhtt ; $cnt++){
  119.       print BUILDHT "$buildhtt[$cnt]n";
  120.    }
  121.    close (BUILDHT);
  122.    @mrtgc = sort(@mrtgc);
  123.    open (HTMLF,">".$webdir.$roothtml);
  124.    print HTMLF <<ECHO;
  125. <HTML>
  126. </HEAD>
  127. <BODY BGCOLOR="#ffffff">
  128. <CENTER><H1>$company Router MRTG Traffic Analysis </H1></CENTER> 
  129. <SPACER TYPE=VERTICAL SIZE=4>
  130. <CENTER><TABLE BORDER=0 WIDTH="100%" CELLSPACING=0 CELLPADDING=0>
  131.   <TR VALIGN=top>
  132.   <TD WIDTH=388 ALIGN="CENTER"><FONT FACE="Arial,Helvetica" SIZE=2>
  133. ECHO
  134.    for ($cnt = 0; $cnt < @mrtgc ; $cnt++){
  135.       $sysn = $mrtgc[$cnt];
  136.       $sysnhtml = $sysn.".html";
  137.       print HTMLF "<A HREF="$sysn/$sysnhtml">$sysn</A><br>n";
  138.    }
  139.    print HTMLF <<ECHO;
  140. </FONT>
  141. </TD>
  142. </TABLE>
  143. </BODY>
  144. </HTML>
  145. ECHO
  146.    close(HTMLF);
  147.    open (MRTGC,">".$cronfile);
  148.    print MRTGC <<ECHO;
  149. #This file runs the MRTG for each config /opt/mrtg/run/file
  150. cd /opt/mrtg/run
  151. ECHO
  152.    for ($cnt = 0; $cnt < @mrtgc ; $cnt++){
  153.       print MRTGC "perl $rundir/mrtg $mrtgc[$cnt].cfg $backgrndn";
  154.    }
  155.    print MRTGC <<ECHO;
  156. # Additonal commands could go here! Under NT the next line will not return
  157. $buildhtf
  158. # End of rebuild ht file
  159. ECHO
  160.    close (MRTGC);
  161. # send to management station
  162. # (local host unless run from a management console)
  163. `ovevent "" .1.3.6.1.4.1.11.2.17.1.0.58916873 .1.3.6.1.4.1.11.2.17.2.1.0 Integer 14 .1.3.6.1.4.1.11.2.17.2.2.0 OctetString "$ENV{OVwSessionID}" .1.3.6.1.4.1.11.2.17.2.4.0 OctetString "OVMRTG Delete for @ARGV COMPLETED"`
  164. }  
  165. main;
  166. exit(0);