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。
#!/usr/bin/perl -w
# ********************************************** #
# Copyright (c), 2006-08, www.aboil.org
#
# File: genmrtg
# Author: Felix New Version: 0.5 Date: 2006/10/18
#
# Function: generate mrtg configure
# Description: if you have many many machine, cfgmaker???? Oops, too tire
# Input: ip list file
# Output: defalt to mrtg.conf, or specify in ip list file
#
# ********************************************** #
use strict;
use File::Basename;
$| = 1;
my $is_new = 1;
my $flag = 'genmrtg';
my $file = 'mrtg.conf';
sub usage {
my $myname = basename $0;
print << "EOF";
Usage:
$myname ip.lst [ip2.lst]
ip.lst FORMAT:
# for comment
====================
## file: mrtg conf file
file: alt.conf
## flag: group flag, descript bellow graph
flag: group1_mark
## group1 ips
ip:
1.1.1.1
1.1.1.2
flag: group2_mark
1.1.2.1
1.1.2.2
file: alt2.conf
flag: group3_mark
ip:
2.1.1.1
2.1.1.2
====================
by Felix New ( felix\@aboil.org )
EOF
}
unless($ARGV[0]) {
usage();
exit;
}
while(<>) {
### skip comment and space line:
next if (/^\s*$/);
next if (/^\s*#/);
### get file name:
if (/^\s*file\s*:\s*(.*)/i) {
$file = $1;
close FILE;
open FILE, ">$file" or die "Can't open $file: $!";
select FILE;
print 'WorkDir: /var/www/html/mrtg' . "\n";
print 'Options[_]: growright, bits, noborder, transparent, avgpeak, unknaszero' . "\n";
print 'EnableIPv6: no' . "\n";
print "Language: Chinese\n";
print "##################\n";
next;
}
### get flag:
if (/^\s*flag\s*:\s*(.*)/i) {
$flag = $1;
next;
}
### get ip:
if (/\s*(\d+\.\d+\.\d+\.\d+)\s*/) {
my $ip = $1;
my $trip = $ip;
$trip =~ s#\d+\.\d+\.(\d+)\.(\d+)#$1-$2#;
my $desc = "$flag-$trip";
print 'Target[' . $ip . ']: /' . $ip . ':public@' . $ip . "\n";
### if snvpv2c, comment last line and uncomment next line:
# print 'Target[' . $ip . ']: /' . $ip . ':public@' . $ip . ':::::2' . "\n";
print 'SetEnv[' . $ip . ']: MRTG_INT_IP="' . "$ip\"\n";
print 'MaxBytes[' . $ip . ']: 12500000' . "\n";
print 'Title[' . $ip . ']:' . $desc . "\n";
print 'PageTop[' . $ip . ']: <h1>' . $desc . '</h1>' . "\n";
print "###############################\n";
next;
}
next;
}
复制代码
[
本帖最后由 moxnet 于 2006-10-18 12:21 编辑
]
genconf
2006-10-18 12:20 上传
点击文件名下载附件
2.21 KB, 下载次数: 56
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2