ciscoindex.pl
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:6k
源码类别:

SNMP编程

开发平台:

C/C++

  1. # ciscoindex.pl
  2. ###############################################################################
  3. # Written 6/14/1999 by Tim Cimarusti tim@cimware.com
  4. #
  5. # This PERL script will read in the MRTG config file and a Cisco router
  6. # config file (created by the "write network" command) and create a HTML
  7. # index for the interfaces that corresponds with MRTG.
  8. # It sorts the output by interface type and adds descriptions,
  9. # IP addresses, DLCI numbers, and bandwidth to the HTML.
  10. #
  11. ###############################################################################
  12. # usage : ciscoindex.pl <mrtg-config-file-name> <cisco-config-file-name>
  13. #
  14. # Note: The HTML document will be named <hostname>.html
  15. #       where <hostname> is whatever is in the router config.
  16. #
  17. ###############################################################################
  18. #
  19. # Revised 2/5/2001 - Now works with version 2.9.7 of MRTG
  20. #
  21. ###############################################################################
  22. $MRTGCFG = $ARGV[0];
  23. $CiscoCFG = $ARGV[1];
  24. &ProcessMRTGFile;
  25. &ProcessCiscoFile;
  26. &PrintHTML;
  27. exit(0);
  28. #
  29. # Read the MRTG config file to find out the interfaces.
  30. #
  31. sub ProcessMRTGFile {
  32. open (MRTGFile, $MRTGCFG ) || die "Can't find MRTG config file. $!n";
  33. while(<MRTGFile>) {
  34. chomp;
  35. if ($_ =~ /SetEnv/) {
  36. @a=split " ", $_;
  37. if ($a[0] eq "#") { next; } # Skip commented interfaces
  38. $intf[$x]=substr($a[2],16,-1); # Find the Interface name
  39. @c=split "]", substr($a[0],7); # Find the name of the mrtg html page
  40. $num[$x]=$c[0];
  41. $x++;
  42. }
  43. }
  44. close MRTGFile;
  45. }
  46. #
  47. # Read down the Cisco Router config file to find out info about each interface.
  48. #
  49. sub ProcessCiscoFile {
  50. open (CiscoFile, $CiscoCFG ) || die "Can't find Cisco config file. $!n";
  51. while(<CiscoFile>) {
  52. chomp;
  53. if ($_ =~ /hostname /)   { $hostname = substr(lc,9); next;}
  54. if ($_ eq "no ip address") { next; }
  55. if ($_ eq "!") { $found="n"; }
  56. if ($_ =~ /interface /) {
  57. @x=split " ", $_;
  58. for ($i=0; $i <= $#num; $i++) {
  59. if ($x[1] eq $intf[$i]) { $found = "y"; last;}
  60. }
  61. }
  62. if ($found eq "y") {
  63.    if ($_ =~ /description/)    { $description[$i] = substr($_,13); }
  64.    if ($_ =~ /bandwidth/)      { @x=split " ", $_; $bandwidth[$i] = $x[1]; }
  65.    if ($_ =~ /interface-dlci/) { @x=split " ", $_; $dlci[$i] = $x[2]; }
  66.    if ($_ =~ /ip address/)     { @x=split " ", $_; $ipaddress[$i] = $x[2]; }
  67. }
  68. }
  69. close CiscoFile;
  70. }
  71. #
  72. # Create a HTML document.
  73. #
  74. sub PrintHTML {
  75. # Change this to whatever directory you use for serving up the files
  76. $mrtgdir="/mrtg/$hostname/";
  77. $HTMLOut = $hostname.".html";
  78. open (HTMLFile, ">$HTMLOut") || die "Couldn't create HTMLOUT file. $!n";
  79. # use binmode on UNIX servers
  80. binmode HTMLFile;
  81. print HTMLFile "<html>n";
  82. print HTMLFile "<!-- Created by ciscoindex.pl : Visit www.cimware.com --->n";
  83. print HTMLFile "<head><title>".$hostname.": Summary of today's activity</title>n";
  84. print HTMLFile "<meta name='keywords' content='$hostname, MRTG'></head>n";
  85. print HTMLFile "<body bgcolor=ffffff>n";
  86. print HTMLFile "<h1>".$hostname."</h1>n";
  87. print HTMLFile "<hr>nn";
  88. # print HTMLFile "<a href=".$mrtgdir.$hostname.".cpu.html><b>CPU</b></a><br>n";
  89. # print HTMLFile "  <blockquote><font size=-1><i>n";
  90. # print HTMLFile "  <a href=".$mrtgdir.$hostname.".cpu.html><img border=0 src=".$mrtgdir.$hostname.".cpu-day.png></a>n";
  91. # print HTMLFile "</i></font></blockquote><hr>nn";
  92. print HTMLFile "n";
  93. # I like to sort my interfaces.
  94. for ($i=0; $i <= $#num; $i++) { if (substr($intf[$i],0,4) eq "Fddi") { &PrintRecord; } }
  95. for ($i=0; $i <= $#num; $i++) { if (substr($intf[$i],0,12) eq "FastEthernet") { &PrintRecord; } }
  96. for ($i=0; $i <= $#num; $i++) { if (substr($intf[$i],0,8) eq "Ethernet") { &PrintRecord; } }
  97. for ($i=0; $i <= $#num; $i++) { if (substr($intf[$i],0,9) eq "TokenRing") { &PrintRecord; } }
  98. for ($i=0; $i <= $#num; $i++) { if (substr($intf[$i],0,7) eq "Serial0") { &PrintRecord; } }
  99. for ($i=0; $i <= $#num; $i++) { if (substr($intf[$i],0,7) eq "Serial1") { &PrintRecord; } }
  100. for ($i=0; $i <= $#num; $i++) { if (substr($intf[$i],0,7) eq "Serial2") { &PrintRecord; } }
  101. for ($i=0; $i <= $#num; $i++) { if (substr($intf[$i],0,7) eq "Serial3") { &PrintRecord; } }
  102. for ($i=0; $i <= $#num; $i++) { if (substr($intf[$i],0,7) eq "Serial4") { &PrintRecord; } }
  103. for ($i=0; $i <= $#num; $i++) { if (substr($intf[$i],0,7) eq "Serial5") { &PrintRecord; } }
  104. for ($i=0; $i <= $#num; $i++) { if (substr($intf[$i],0,7) eq "Serial6") { &PrintRecord; } }
  105. for ($i=0; $i <= $#num; $i++) { if (substr($intf[$i],0,7) eq "Serial7") { &PrintRecord; } }
  106. for ($i=0; $i <= $#num; $i++) { if (substr($intf[$i],0,7) eq "Serial8") { &PrintRecord; } }
  107. for ($i=0; $i <= $#num; $i++) { if (substr($intf[$i],0,7) eq "Serial9") { &PrintRecord; } }
  108. print HTMLFile "</body>n";
  109. print HTMLFile "</html>n";
  110. close (HTMLOut);
  111. }
  112. # Print section for each record.
  113. sub PrintRecord {
  114. print HTMLFile "<a href=".$mrtgdir.$num[$i].".html><b>".$intf[$i]."</b></a><br>n";
  115. print HTMLFile "  <blockquote><font size=-1><i>n";
  116.     if ($description[$i] ne "") { print HTMLFile "    Description : ".$description[$i]."<br>n"; }
  117. if ($ipaddress[$i] ne "") { print HTMLFile "    IP Address  : ".$ipaddress[$i]."<br>n"; }
  118. if ($bandwidth[$i] ne "") { print HTMLFile "    Bandwidth   : ".$bandwidth[$i]."<br>n"; }
  119. if ($dlci[$i] ne "") { print HTMLFile "    DLCI        : ".$dlci[$i]."<br>n"; }
  120. print HTMLFile "  <a href=".$mrtgdir.$num[$i].".html><img border=0 src=".$mrtgdir.$num[$i]."-day.png></a>n";
  121. print HTMLFile "</i></font></blockquote><p>nn";
  122. print HTMLFile "n";
  123. }