Chinaunix

标题: 一个大量分组生成mrtg的脚本 [打印本页]

作者: moxnet    时间: 2006-10-18 12:20
标题: 一个大量分组生成mrtg的脚本
分析了一下mrtg的配置文件,去掉了不需要的,简化了配置,写了个配置文件,共享一下。

生成的mrtg配置文件修改WorkDir,测试一下,OK后再加入到。

读入一个ip列表文件,文件中有file,flag和ip三个段。

file是生成的mrtg配置文件名;
flag为每台机器的标识。实际生成的标识会加上ip的后两个段。如flag为ShangHai,IP为1.2.3.4,则生成的flag为ShangHai-3-4。
ip为本组下的ip列表,一行一个IP。

一个file可含有多个不同flag,一个flag有多个IP。


  1. #!/usr/bin/perl -w

  2. # ********************************************** #
  3. # Copyright (c), 2006-08, www.aboil.org
  4. #
  5. # File:         genmrtg
  6. # Author: Felix New      Version: 0.5    Date: 2006/10/18
  7. #
  8. # Function:     generate mrtg configure
  9. # Description:  if you have many many machine, cfgmaker???? Oops, too tire
  10. # Input:        ip list file
  11. # Output:       defalt to mrtg.conf, or specify in ip list file
  12. #
  13. # ********************************************** #


  14. use strict;
  15. use File::Basename;
  16. $| = 1;

  17. my $is_new = 1;
  18. my $flag = 'genmrtg';
  19. my $file = 'mrtg.conf';

  20. sub usage {
  21.         my $myname = basename $0;
  22. print << "EOF";
  23. Usage:
  24.         $myname  ip.lst [ip2.lst]

  25. ip.lst FORMAT:
  26. # for comment
  27. ====================
  28. ## file: mrtg conf file
  29. file: alt.conf
  30. ## flag: group flag, descript bellow graph
  31. flag: group1_mark
  32. ## group1 ips
  33. ip:
  34. 1.1.1.1
  35. 1.1.1.2
  36. flag: group2_mark
  37. 1.1.2.1
  38. 1.1.2.2

  39. file: alt2.conf
  40. flag: group3_mark
  41. ip:
  42. 2.1.1.1
  43. 2.1.1.2
  44. ====================

  45.                         by Felix New ( felix\@aboil.org )
  46. EOF
  47. }

  48. unless($ARGV[0]) {
  49.         usage();
  50.         exit;
  51. }

  52. while(<>) {
  53.         ### skip comment and space line:
  54.         next if (/^\s*$/);
  55.         next if (/^\s*#/);

  56.         ### get file name:
  57.         if (/^\s*file\s*:\s*(.*)/i) {
  58.                 $file = $1;
  59.                 close FILE;
  60.                 open FILE, ">$file" or die "Can't open $file: $!";
  61.                 select FILE;
  62.                 print 'WorkDir: /var/www/html/mrtg' . "\n";
  63.                 print 'Options[_]: growright, bits, noborder, transparent, avgpeak, unknaszero' . "\n";
  64.                 print 'EnableIPv6: no' . "\n";
  65.                 print "Language: Chinese\n";
  66.                 print "##################\n";

  67.                 next;
  68.         }

  69.         ### get flag:
  70.         if (/^\s*flag\s*:\s*(.*)/i) {
  71.                 $flag = $1;
  72.                 next;
  73.         }

  74.         ### get ip:
  75.         if (/\s*(\d+\.\d+\.\d+\.\d+)\s*/) {
  76.                 my $ip = $1;
  77.                 my $trip = $ip;
  78.                 $trip =~ s#\d+\.\d+\.(\d+)\.(\d+)#$1-$2#;
  79.                 my $desc = "$flag-$trip";

  80.                 print 'Target[' . $ip . ']: /' . $ip . ':public@' . $ip . "\n";
  81. ### if snvpv2c, comment last line and uncomment next line:
  82. #                print 'Target[' . $ip . ']: /' . $ip . ':public@' . $ip . ':::::2' . "\n";
  83.                 print 'SetEnv[' . $ip . ']: MRTG_INT_IP="' . "$ip\"\n";
  84.                 print 'MaxBytes[' . $ip . ']: 12500000' . "\n";
  85.                 print 'Title[' . $ip . ']:' . $desc . "\n";
  86.                 print 'PageTop[' . $ip . ']: <h1>' . $desc . '</h1>' . "\n";
  87.         print "###############################\n";
  88.         next;
  89.         }
  90.         next;
  91. }
复制代码

[ 本帖最后由 moxnet 于 2006-10-18 12:21 编辑 ]

genconf

2.21 KB, 下载次数: 56






欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2