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

SNMP编程

开发平台:

C/C++

  1. #!/usr/bin/perl -w
  2. #
  3. # Filename: mrtg.archive.pl
  4. # Archive mrtg gifs and summary files
  5. # Original author: Emanuele Leonardi <Emanuele.Leonardi@roma1.infn.it>
  6. # Modified by: Rawlin Blake <blake@nevada.edu>
  7. #
  8. # Default placement of mrtg.archive.* is in /usr/local/sbin
  9. # If you place them elsewhere, change the $Conf_File setting later in this file.
  10. #
  11. # The cron entry I use is:
  12. # 57 23 * * * /usr/local/sbin/mrtg.archive.pl 1>> /var/log/mrtg.archive.log 2>&1
  13. #
  14. # At 23:57 every night it copies the current gifs for the given list of router
  15. # interfaces to a directory named with the current date (e.g. 970717).
  16. #
  17. #    This program is free software; you can redistribute it and/or modify
  18. #    it under the terms of the GNU General Public License as published by
  19. #    the Free Software Foundation; either version 2 of the License, or
  20. #    (at your option) any later version.
  21. #
  22. #    This program is distributed in the hope that it will be useful,
  23. #    but WITHOUT ANY WARRANTY; without even the implied warranty of
  24. #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  25. #    GNU General Public License for more details.#
  26. #
  27. #    You should have received a copy of the GNU General Public License
  28. #    along with this program; if not, write to the Free Software
  29. #    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
  30. #    USA.
  31. #
  32. # revision 1.1  09/10/1999
  33. #   Improved error handling
  34. #   Most configurations moved to separate file
  35. #
  36. # revision 1.0  07/01/1999
  37. #   Named my version mrtg.archive.pl, allowing Emanuele to update his
  38. #     software without confusion resulting :-)
  39. #   Weekly archiving of week gifs, monthly archiving of month gifs, yearly
  40. #     archiving of year gifs. 
  41. #   Specification of which interfaces summary files are saved for.
  42. #   Terse log messages.
  43. #   Creation of the archive directory if it doesn't exist.
  44. #   Symlinking of the mrtg gifs instead of copying (I have limited disk space).
  45. #
  46. # backup.pl 07/17/97
  47. #  Author: Emanuele Leonardi <Emanuele.Leonardi@roma1.infn.it>
  48. #
  49. use strict
  50. #
  51. # User configuration
  52. #
  53. # Change this setting if the mrtg.archive files are
  54. # not placed in /usr/local/sbin/
  55. #
  56. $Conf_File = "/usr/local/sbin/mrtg.archive.conf";
  57. #
  58. # End user configuration
  59. #
  60. # Check for configuration file
  61. open(CONF,"$Conf_File") ||
  62.     die "Error opening configuration file $Conf_File: $!n";
  63. close(CONF);
  64. # Get date and time of execution
  65. chomp ($date = `date +%y%m%d`);
  66. chomp ($time = `date +%H:%M:%S`);
  67. chomp ($week = `date +%w`);
  68. chomp ($month = `date +%d`);
  69. chomp ($year = `date +%m%d`);
  70. require "$Conf_File";
  71. print "===nArchive $date at $timen";
  72. # Create daily directory and copy default GIF files
  73. if (!-e $ARCHIVE_DIR) {
  74.    mkdir($ARCHIVE_DIR, 0755) || die "Error creating $ARCHIVE_DIR: $!n";
  75.    chmod(0755, $ARCHIVE_DIR);
  76.    print "Create $ARCHIVE_DIRn";
  77. }
  78. mkdir($TO_DIR, 0755) || die "Error creating $TO_DIR: $!n";
  79. chmod(0755, $TO_DIR);
  80. print "Create $TO_DIRn";
  81. foreach $mgif ( @common_gifs ) {
  82.     symlink("$MRTG_DIR" . "/" . "$mgif", "$TO_DIR" . "/" . "$mgif");
  83. }
  84. # For each node copy the daily gifs
  85. foreach $node ( @nodes_to_archive ) {
  86.     system(sprintf("cp -a %s/%s.*-day.gif %s",$MRTG_DIR,$node,$TO_DIR));
  87. }
  88. # For each node copy the weekly gifs on Sunday
  89. if ($week == "0") {
  90.     foreach $node ( @nodes_to_archive ) {
  91.         system(sprintf("cp -a %s/%s.*-week.gif %s",$MRTG_DIR,$node,$TO_DIR));
  92.     }
  93. }
  94. # For each node copy the monthly gifs on the first
  95. if ($month == "01") {
  96.     foreach $node ( @nodes_to_archive ) {
  97.         system(sprintf("cp -a %s/%s.*-month.gif %s",$MRTG_DIR,$node,$TO_DIR));
  98.     }
  99. }
  100. # For each node copy the yearly gifs on January first
  101. if ($year == "0101") {
  102.     foreach $node ( @nodes_to_archive ) {
  103.         system(sprintf("cp -a %s/%s.*-year.gif %s",$MRTG_DIR,$node,$TO_DIR));
  104.     }
  105. }
  106. # For each node copy the daily summary file and create the index file
  107. foreach $summary ( @nodes_to_summary ) {
  108.     printf("%sn",$summary);
  109.     $Summary_Source = "$MRTG_DIR/$summary.html";
  110.     $Summary_Destination = "$TO_DIR/$summary.html";
  111.     open(SRC,"<$Summary_Source") || die "Error opening $Summary_Source: $!n";
  112.     open(DST,">$Summary_Destination") ||
  113. die "Error opening $Summary_Destination: $!n";
  114.     while (<SRC>) {
  115. s/<A HREF[^>]*>//g;
  116. s/</A>//g;
  117. s/Router Overview/Router Overview of $date/;
  118. s/<META HTTP-EQUIV="Refresh" CONTENT=300 >//;
  119. print DST; }
  120.     close(SRC);
  121.     close(DST);
  122.     chmod(0644, $Summary_Destination);
  123. }
  124. # Create the general index file
  125. $INDEX = "$TO_DIR/index.html";
  126. print "Create $INDEXn";
  127. open(IDX,">$INDEX") || die "Could not open $INDEX: $!n";
  128. printf IDX
  129. "<HTML>
  130. <HEAD>
  131. <TITLE>Router Summary for %s</TITLE>
  132. </HEAD>
  133. <BODY BGCOLOR="#FFFFFF">
  134. <CENTER><H1>Router Summary for %s</H1></CENTER>
  135. <P>
  136. <UL TYPE=SQUARE>
  137. ",$date,$date;
  138. foreach $summary ( @nodes_to_summary ) {
  139.     printf IDX "<LI><A HREF="%s.html">%s</A></LI>n",$summary,$summary;
  140. }
  141. print IDX
  142. "</UL>
  143. </P>
  144. </BODY>
  145. </HTML>";
  146. close(IDX);
  147. chmod(0644, $INDEX);
  148. @common_gifs = "";
  149. chomp ($time = `date +%H:%M:%S`);
  150. print "Archive $date done at $timen";
  151. exit(0);
  152. # Eof mrtg.archive.pl