[c-nsp] nagios monitor bgp peer pluggin?
Shaun
mailinglists at unix-scripts.com
Thu Nov 3 19:45:14 EST 2005
I ended up writing my own... maybe somebody else out their may want to use
it.... Honestly i havnt done too much testing with the script yet, it
appears to be working...
#!/usr/bin/perl
use strict;
use Net::SNMP;
use Getopt::Long qw(:config no_ignore_case);
my %opt;
GetOptions( "H=s" => \$opt{'H'},
"C=s" => \$opt{'C'},
"p=s" => \$opt{'p'},
"idle=s" => \$opt{'idle'},
"connect=s" => \$opt{'connect'},
"active=s" => \$opt{'active'},
"opensent=s" => \$opt{'opensent'},
"openconfirm=s" => \$opt{'openconfirm'},
"established=s" => \$opt{'established'} );
my %bgp_states = (
"1" => "Idle",
"2" => "Connect",
"3" => "Active",
"4" => "OpenSent",
"5" => "OpenConfirm",
"6" => "Established"
);
unless ($opt{'H'} && $opt{'C'} && $opt{'p'} && $opt{'idle'} &&
$opt{'connect'} && $opt{'active'} && $opt{'opensent'} && $opt{'openconfirm'}
&& $opt{'established'}) {
print "Usage: $0 <ARGS>\n";
print "Example: $0 -H 192.168.0.1 -C public -P 192.168.1.2 \\\n";
print " -idle c -connect w -active w -opensent
w -openconfirm w -established o\n\n";
print " -H\t\t Hostname or IP\n";
print " -C\t\t Community String\n";
print " -p\t\t Peer IP Address\n";
print " -idle\t\t BGP State Idle,\t c=critical, w=warning, o=ok\n";
print " -connect\t BGP State Connect,\t c=critical, w=warning,
o=ok\n";
print " -active\t BGP State Active,\t c=critical, w=warning,
o=ok\n";
print " -opensent\t BGP State OpenSent,\t c=critical, w=warning,
o=ok\n";
print " -openconfirm\t BGP State OpenConfirm,\t c=critical,
w=warning, o=ok\n";
print " -established\t BGP State Established,\t c=critical,
w=warning, o=ok\n\n";
exit 3;
}
$opt{'idle'} = cl($opt{'idle'});
$opt{'connect'} = cl($opt{'connect'});
$opt{'active'} = cl($opt{'active'});
$opt{'opensent'} = cl($opt{'opensent'});
$opt{'openconfirm'} = cl($opt{'openconfirm'});
$opt{'established'} = cl($opt{'established'});
my $oid_bgp_peerstate = '1.3.6.1.2.1.15.3.1.2.'.$opt{'p'};
my($session, $error) = Net::SNMP->session(-hostname => $opt{'H'},
-community => $opt{'C'} );
unless(defined($session)) {
print "Could not establish SNMP session\n";
exit 2;
}
my $result = $session->get_request(-varbindlist => [$oid_bgp_peerstate] );
my $bgp_peerstate = $result->{$oid_bgp_peerstate};
$session->close;
print "BGP Peer ".$opt{'p'}." State: ".$bgp_states{$bgp_peerstate}."\n";
print $opt{'established'};
exit $opt{'established'} if $bgp_peerstate == 6;
exit $opt{'openconfirm'} if $bgp_peerstate == 5;
exit $opt{'opensent'} if $bgp_peerstate == 4;
exit $opt{'active'} if $bgp_peerstate == 3;
exit $opt{'connect'} if $bgp_peerstate == 2;
exit $opt{'idle'} if $bgp_peerstate == 1;
exit 3;
sub cl {
my($level) = @_;
return 2 if $level eq "c";
return 1 if $level eq "w";
return 0 if $level eq "o";
return 3;
}
More information about the cisco-nsp
mailing list