|
Packit |
667938 |
#!/usr/local/bin/perl5
|
|
Packit |
667938 |
# -*- mode: Perl -*-
|
|
Packit |
667938 |
##################################################################
|
|
Packit |
667938 |
# This file controls the creation of all the MRTG config files from OV
|
|
Packit |
667938 |
##################################################################
|
|
Packit |
667938 |
# Created by Laurie Gellatly <gellatly@one.net.au>
|
|
Packit |
667938 |
# See newrtrov.txt for a description of what is performed
|
|
Packit |
667938 |
#################################################################
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
# Distributed under the GNU copyleft
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
# $Id: ovadd,v 1.1.1.1 2002/02/26 10:16:36 oetiker Exp $
|
|
Packit |
667938 |
#
|
|
Packit |
667938 |
use Socket;
|
|
Packit |
667938 |
use strict;
|
|
Packit |
667938 |
use vars '$DEBUG';
|
|
Packit |
667938 |
my $DEBUG = 0;
|
|
Packit |
667938 |
my $company = "Company";
|
|
Packit |
667938 |
my $rundir = "/opt/mrtg/run";
|
|
Packit |
667938 |
my $webdir = "/var/opt/ns-fasttrack/docs/mrtg/";
|
|
Packit |
667938 |
my $cronfile = "mrtgc";
|
|
Packit |
667938 |
my $roothtml = "routers.html";
|
|
Packit |
667938 |
my $buildhtf = "buildht";
|
|
Packit |
667938 |
my $dnsfile = "ovmrtgc.csv";
|
|
Packit |
667938 |
|
|
Packit |
667938 |
# Change the next line to be " &" to submit all jobs at once
|
|
Packit |
667938 |
my $backgrnd = " ";
|
|
Packit |
667938 |
|
|
Packit |
667938 |
my($at,$router,$sysn,$sysncfg,$sysnhtml,$head,$cnt);
|
|
Packit |
667938 |
my(@buildhtt,@sysipnms,@mrtgc,@sysnms);
|
|
Packit |
667938 |
|
|
Packit |
667938 |
sub main {
|
|
Packit |
667938 |
|
|
Packit |
667938 |
$router = $ARGV[0];
|
|
Packit |
667938 |
die <
|
|
Packit |
667938 |
|
|
Packit |
667938 |
USAGE: ovadd 'router IP ADDRESS/S'
|
|
Packit |
667938 |
|
|
Packit |
667938 |
EXAMPLE: ovadd 193.21.1.2 10.21.1.2 10.21.1.1
|
|
Packit |
667938 |
|
|
Packit |
667938 |
|
|
Packit |
667938 |
USAGE
|
|
Packit |
667938 |
chdir $rundir;
|
|
Packit |
667938 |
# Find the IP Address and SNMP sysNames from the arguments given
|
|
Packit |
667938 |
@sysipnms=`perl ovsysnms @ARGV`;
|
|
Packit |
667938 |
chomp(@sysipnms);
|
|
Packit |
667938 |
# Generate the interfaces to collect on
|
|
Packit |
667938 |
`perl ovcols + @ARGV > collects`;
|
|
Packit |
667938 |
# Start the collection happening on these interfaces
|
|
Packit |
667938 |
`xnmcollect -merge collects`;
|
|
Packit |
667938 |
`xnmcollect -event`;
|
|
Packit |
667938 |
for ($cnt = 0; $cnt < @sysipnms ; $cnt++){
|
|
Packit |
667938 |
($router,$sysn) = split /\,/, $sysipnms[$cnt];
|
|
Packit |
667938 |
$sysn = lc($sysn);
|
|
Packit |
667938 |
$sysncfg = $sysn.".cfg";
|
|
Packit |
667938 |
$sysnhtml = $sysn.".html";
|
|
Packit |
667938 |
# Create the .cfg file for each device
|
|
Packit |
667938 |
`perl $rundir\/cfgmakerov $router > $sysncfg`;
|
|
Packit |
667938 |
# Create the root HTML file for this device in its directory
|
|
Packit |
667938 |
`perl $rundir\/index $sysncfg "Router $sysn" $sysn > $webdir$sysn\/$sysnhtml`;
|
|
Packit |
667938 |
$mrtgc[@mrtgc] = $sysn;
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
|
|
Packit |
667938 |
@mrtgc = sort(@mrtgc);
|
|
Packit |
667938 |
$cnt = 0;
|
|
Packit |
667938 |
$head = 0;
|
|
Packit |
667938 |
$at = 0;
|
|
Packit |
667938 |
open(BUILDHT, "<".$buildhtf);
|
|
Packit |
667938 |
# This next piece of code assumes that the $buildhtf file is in alpha order
|
|
Packit |
667938 |
# This code leaves old lines untouched (in case the IP address rather than
|
|
Packit |
667938 |
# the sysName was used as the target
|
|
Packit |
667938 |
while(<BUILDHT>){
|
|
Packit |
667938 |
chomp;
|
|
Packit |
667938 |
if (/index (.*)\.cfg/){
|
|
Packit |
667938 |
$sysn = $1;
|
|
Packit |
667938 |
$head = $_;
|
|
Packit |
667938 |
if (($sysn lt $mrtgc[$at]) || ($at >= @mrtgc)) {
|
|
Packit |
667938 |
$buildhtt[@buildhtt] = $head;
|
|
Packit |
667938 |
}else {
|
|
Packit |
667938 |
do{
|
|
Packit |
667938 |
$cnt = $mrtgc[$at];
|
|
Packit |
667938 |
$buildhtt[@buildhtt] =
|
|
Packit |
667938 |
"perl $rundir\/index $cnt.cfg \"Router $cnt\" $cnt > $webdir$cnt\/$cnt.html";
|
|
Packit |
667938 |
++$at;
|
|
Packit |
667938 |
}while (($sysn ge $mrtgc[$at]) && ($at < @mrtgc));
|
|
Packit |
667938 |
if ($sysn ne $mrtgc[$at-1]){
|
|
Packit |
667938 |
$buildhtt[@buildhtt] = $head;
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
close (BUILDHT);
|
|
Packit |
667938 |
# In case there were none to start with add it the new members
|
|
Packit |
667938 |
while ($at < @mrtgc){
|
|
Packit |
667938 |
$cnt = $mrtgc[$at];
|
|
Packit |
667938 |
$buildhtt[@buildhtt] =
|
|
Packit |
667938 |
"perl $rundir\/index $cnt.cfg \"Router $cnt\" $cnt > $webdir$cnt\/$cnt.html";
|
|
Packit |
667938 |
++$at;
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
open (BUILDHT,">".$buildhtf);
|
|
Packit |
667938 |
print BUILDHT <
|
|
Packit |
667938 |
#This file builds the HTML for each device being monitored
|
|
Packit |
667938 |
cd $rundir
|
|
Packit |
667938 |
ECHO
|
|
Packit |
667938 |
for ($cnt = 0; $cnt < @buildhtt ; $cnt++){
|
|
Packit |
667938 |
print BUILDHT "$buildhtt[$cnt]\n";
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
close (BUILDHT);
|
|
Packit |
667938 |
|
|
Packit |
667938 |
# Add on the new IPs and sysNames to the onces we already have
|
|
Packit |
667938 |
open (DNSFILE,"<".$dnsfile);
|
|
Packit |
667938 |
while(<DNSFILE>){
|
|
Packit |
667938 |
chomp;
|
|
Packit |
667938 |
$sysipnms[@sysipnms] = $_;
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
close (DNSFILE);
|
|
Packit |
667938 |
|
|
Packit |
667938 |
@sysipnms = sort srtipnms @sysipnms;
|
|
Packit |
667938 |
$sysn = ".";
|
|
Packit |
667938 |
for ($cnt = 0; $cnt < @sysipnms ; $cnt++){
|
|
Packit |
667938 |
$head = lc((split /\,/,$sysipnms[$cnt])[1]);
|
|
Packit |
667938 |
if($sysn eq $head){
|
|
Packit |
667938 |
next;
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
$sysn = $head;
|
|
Packit |
667938 |
$sysipnms[@sysnms] = $sysipnms[$cnt];
|
|
Packit |
667938 |
$sysnms[@sysnms] = $sysn;
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
# Now sysnms has the exact number of targets in it while sysipnms has
|
|
Packit |
667938 |
# the first @sysnms entries correct!
|
|
Packit |
667938 |
|
|
Packit |
667938 |
open (DNSFILE,">".$dnsfile);
|
|
Packit |
667938 |
for ($cnt = 0; $cnt < @sysnms ; $cnt++){
|
|
Packit |
667938 |
print DNSFILE "$sysipnms[$cnt]\n";
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
close (DNSFILE);
|
|
Packit |
667938 |
|
|
Packit |
667938 |
open (HTMLF,">".$webdir.$roothtml);
|
|
Packit |
667938 |
print HTMLF <
|
|
Packit |
667938 |
<HTML>
|
|
Packit |
667938 |
</HEAD>
|
|
Packit |
667938 |
<BODY BGCOLOR="#ffffff">
|
|
Packit |
667938 |
<CENTER>$company Router MRTG Traffic Analysis </CENTER>
|
|
Packit |
667938 |
|
|
Packit |
667938 |
<SPACER TYPE=VERTICAL SIZE=4>
|
|
Packit |
667938 |
<CENTER>
|
|
Packit |
667938 |
|
|
Packit |
667938 |
<FONT FACE="Arial,Helvetica" SIZE=2>
|
|
Packit |
667938 |
ECHO
|
|
Packit |
667938 |
for ($cnt = 0; $cnt < @sysnms ; $cnt++){
|
|
Packit |
667938 |
$sysn = $sysnms[$cnt];
|
|
Packit |
667938 |
$sysnhtml = $sysn.".html";
|
|
Packit |
667938 |
print HTMLF "$sysn<\/A> \n";
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
print HTMLF <
|
|
Packit |
667938 |
</FONT>
|
|
Packit |
667938 |
|
|
Packit |
667938 |
|
|
Packit |
667938 |
</BODY>
|
|
Packit |
667938 |
</HTML>
|
|
Packit |
667938 |
ECHO
|
|
Packit |
667938 |
close(HTMLF);
|
|
Packit |
667938 |
open (MRTGC,">".$cronfile);
|
|
Packit |
667938 |
print MRTGC <
|
|
Packit |
667938 |
#This file runs the MRTG for each config $rundir/file
|
|
Packit |
667938 |
cd $rundir
|
|
Packit |
667938 |
ECHO
|
|
Packit |
667938 |
for ($cnt = 0; $cnt < @sysnms ; $cnt++){
|
|
Packit |
667938 |
print MRTGC "perl $rundir\/mrtg $sysnms[$cnt].cfg $backgrnd\n";
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
print MRTGC <
|
|
Packit |
667938 |
# Additional commands could go here. Under NT the next line won't return
|
|
Packit |
667938 |
$buildhtf
|
|
Packit |
667938 |
# End of rebuild ht file
|
|
Packit |
667938 |
ECHO
|
|
Packit |
667938 |
close (MRTGC);
|
|
Packit |
667938 |
# send to management station
|
|
Packit |
667938 |
# (local host unless run from a management console)
|
|
Packit |
667938 |
`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 ADD/Update for @ARGV COMPLETED"`
|
|
Packit |
667938 |
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
main;
|
|
Packit |
667938 |
exit(0);
|
|
Packit |
667938 |
sub srtipnms{
|
|
Packit |
667938 |
lc((split( /\,/,$a))[1]) cmp lc( (split( /\,/,$b))[1]);
|
|
Packit |
667938 |
}
|
|
Packit |
667938 |
|