OSPF

Christian Schneemann cschneemann at suse.de
Tue Jul 15 12:06:42 CEST 2008


On Tuesday July 15 2008 11:42:04 am Kermito le kermit wrote:
> hello all,
Hi,
>
> i configure my cisco router
>
> router ospf 1
> network 10.1.3.0 0.255.255.255 area 1
>
>
> when i lunch ./check_ospf.pl 10.1.3.133 nothing work help me please
>
>
>
> my ospf.pl
Is this the Script you are using? Uncomment the use warnings, maybe you will 
get some information what it could be that courses the error.
You have uncommented boty $version variables, and behind the "v2c"; is a # 
missing, so you have barewords in your code, maybe the script stops there.

But you could be even mor verbose on what error message you get, just a "it 
does not work" is not really helpfull for people who want to help.


>
> #!/usr/bin/perl
>
> #########################################################################
> #              SCRIPT TO CHECK OSPF neighbors status on a router.       #
> #-----------------------------------------------------------------------#
> # Version 1.00 (16-09-2002)                                             #
> #  - First release                                                      #
> #                                     #
> #                                        #
> #                                    #
> #                                                                       #
> #########################################################################
>
> use Net::SNMP(qw(oid_lex_sort));
> # use warnings;
> use strict;
>
> #############################
> # Declaration of variables. #
> #############################
> my $community       = "public";
> my $port            = 161;
>  my $version         = "v2c"; Uncomment to use with Version 2 SNMP
> my $version         = "v1";
> my $timeout         = 20;               # seconds
> my $retries         = 2;                # times
>
> my $ospfstate         = ".1.3.6.1.2.1.14.10.1.6"; # ospfNbrState (Integer)
> my $localaddr       = ".1.3.6.1.2.1.14.10.1.1"; # ospfNbrIpAddr (IpAddress)
> my $remoteaddr      = ".1.3.6.1.2.1.14.10.1.3"; # ospfNbrRtrId (IpAddress)
> my $ospfstatus        = ".1.3.6.1.2.1.14.10.1.9"; # ospfNBMANbrStatus
> (Integer)
>
> my $session;
> my $error;
> my %DataTable;
> my $tmp;
>
> my $pctwarning      = 98; # Minimum percent of Neighbors Established before
> a warning is generated. my $pctalert        = 75; # Minimum percent of
> Neighbors Establisted before an alert is generated.
>
> # Get the ipaddress from the parameters.
> # --------------------------------------
> my $arg_router = $ARGV[0];
>
> # Get the data from the router.
> # -----------------------------
>
> # Open SNMP session on the router.
> ($session, $error) = Net::SNMP->session( -hostname    => $arg_router,
>                                          -community   => $community,
>                                          -port        => $port,
>                                          -version     => $version,
>                                          -timeout     => $timeout,
>                                          -retries     => $retries );
>
> # Exit if no session could be opened.
> if (!defined ($session)) {
>     print "Error\n";
>     exit 1;
> }
>
> # Get the Neighbor Status.
> # ------------------
> my %OSPFStatus       = &snmptableget($ospfstatus);
> my %LocalIp        = &snmptableget($localaddr);
> my %RemoteIp       = &snmptableget($remoteaddr);
> my %OSPFState      = &snmptableget($ospfstate);
>
> # Calculate the Neighbor Data.
> my $TotalNeighbor = scalar (keys %OSPFState);
> if ($TotalNeighbor != 0) {
>     my $Down=0;
>     my $Attempt=0;
>     my $Init=0;
>     my $TwoWay=0;
>     my $ExchangeStart=0;
>     my $Exchange=0;
>     my $Loading=0;
>     my $Full=0;
>     foreach $tmp (sort keys %OSPFState) {
>         # Neighbors Down
>         if ($OSPFState{$tmp} == 1) {
>             $Down++;
>         }
>         # Neighbors Attempt
>                if ($OSPFState{$tmp} == 2) {
>                        $Attempt++;
>             }
>         # Neighbors Init
>         if ($OSPFState{$tmp} == 3) {
>             $Init++;
>         }
>             # Neighbors TwoWay
>             if ($OSPFState{$tmp} == 4) {
>                     $TwoWay++;
>             }
>             # Neighbors ExchangeStart
>             if ($OSPFState{$tmp} == 5) {
>                     $ExchangeStart++;
>             }
>             # Neighbors Exchange
>             if ($OSPFState{$tmp} == 6) {
>                     $Exchange++;
>             }
>             # Neighbors Loading
>             if ($OSPFState{$tmp} == 7) {
>                     $Loading++;
>             }
>             # Neighbors Full
>             if ($OSPFState{$tmp} == 8) {
>                     $Full++;
>             }
>     }
>     # Print the data.
>     # ---------------
>     my $msgcolor;
>     my $pctDown          = int (($Down / $TotalNeighbor) * 100);
>     my $pctAttempt         = int (($Attempt / $TotalNeighbor) * 100);
>     my $pctInit         = int (($Init / $TotalNeighbor) * 100);
>     my $pctTwoWay        = int (($TwoWay / $TotalNeighbor) * 100);
>     my $pctExchangeStart = int (($ExchangeStart / $TotalNeighbor) * 100);
>     my $pctExchange      = int (($Exchange / $TotalNeighbor) * 100);
>     my $pctLoading       = int (($Loading / $TotalNeighbor) * 100);
>     my $pctFull          = int (($Full / $TotalNeighbor) * 100);
>
>     my $pctTotal         = int ($pctFull + $pctTwoWay);
>
>     if ($pctTotal > $pctwarning) {
>         $msgcolor = "green";
>     }
>     if ($pctTotal <= $pctalert) {
>         $msgcolor = "red";
>     }
>     if ($pctTotal <= $pctwarning) {
>         $msgcolor = "yellow";
>     }
>     if (!$msgcolor) {
>         $msgcolor = "purple";
>     }
>
>     print "$msgcolor\n";
>     print "<br> <br>";
>     print "<table border=\"1\">";
>     print "<tr> <td> Number of Neighbors      </td> <td> $TotalNeighbor
> </td> </tr>"; print "<tr> <td> Neighbor Down        </td> <td> $Down
> ($pctDown\%) </td> </tr>"; print "<tr> <td> Neighbor Attempt     </td> <td>
> $Attempt ($pctAttempt\%) </td> </tr>"; print "<tr> <td> Neighbor Init     
> </td> <td> $Init ($pctInit\%) </td> </tr>"; print "<tr> <td> Neighbor
> TwoWay    </td> <td> $TwoWay ($pctTwoWay\%) </td> </tr>"; print "<tr> <td>
> Neighbor ExchangeStart </td> <td> $ExchangeStart ($pctExchangeStart\%)
> </td> </tr>"; print "<tr> <td> Neighbor Exchange </td> <td> $Exchange
> ($pctExchange\%) </td> </tr>"; print "<tr> <td> Neighbor Loading </td> <td>
> $Loading ($pctLoading\%) </td> </tr>"; print "<tr> <td> Neighbor Full </td>
> <td> $Full ($pctFull\%) </td> </tr>"; print "</table>";
>     print "<br> <small> Total may not equal 100% </small> <br>";
>     print "<br> Table for neighbor NOT full <br>";
>     print "<table border=\"1\">";
>     print "<tr> <th> Source </th> <th> Dest </th> <th> Status </th> </tr>";
>     foreach $tmp (sort keys %OSPFState) {
>         if ($OSPFState{$tmp} != "8") {
>             my $Status = &getstatus($OSPFState{$tmp});
>             print "<tr> <td> $LocalIp{$tmp} </td> <td> $RemoteIp{$tmp}
> </td> <td> $Status </td> </tr>"; }
>     }
>     print "</table>";
> } else {
>     print "purple\n";
>     print "<br>Error while fetching data or no OSPF data found...\n";
> }
>
> ###########################
> # SUBROUTINES START HERE. #
> ###########################
>
> sub snmptableget ($) {
>         my $snmpvar = shift;
>     my $index;
>     my %snmpresult;
>         my $response = $session->get_table($snmpvar);
>     foreach (keys %snmpresult) { delete $snmpresult{$_}; }  # old values
> need to be deleted. if (defined ($response)) {
>                 foreach (oid_lex_sort(keys(%{$response}))) {
>                         $snmpresult{$_} = $response->{$_};
>                 }
>         }
>     foreach $index (sort keys %snmpresult) {
>         $index =~ /$snmpvar\./;
>         $DataTable{$'} = $snmpresult{$index};
>     }
>         return (%DataTable);
> }
>
> sub getstatus($) {
>         return {
>                  '1' => 'Down'
>                 ,'2' => 'Attempt'
>                 ,'3' => 'Init'
>                 ,'4' => 'TwoWay'
>                 ,'5' => 'ExchangeStart'
>                 ,'6' => 'Established'
>                 ,'7' => 'Loading'
>                 ,'8' => 'Full'
>         }->{(shift)};
> }
>
>
>
>
>
>
>  C'est pas parce que c'est difficile qu'on n'ose pas,
> c'est parce qu'on ose pas que c'est difficile !
>
>
>
> ----- Message d'origine ----
> De : Alex Dehaini <alexdehaini at gmail.com>
> À : Ange AMBEMOU <angeolivier2003 at yahoo.fr>; Nagios Users Mailinglist
> <nagios-users at lists.sourceforge.net> Envoyé le : Vendredi, 11 Juillet 2008,
> 11h32mn 05s
> Objet : Re: [Nagios-users] OSPF
>
> Yes it is. Check the nagiosexchange site for this plugin.
>
> Lex
>
>
> On Fri, Jul 11, 2008 at 10:29 AM, Ange AMBEMOU <angeolivier2003 at yahoo.fr>
> wrote:
>
> helo all,
>
> i want to know if is possible to nagios to check the OSPF on router thanks
>
>
>
>
>
> ________________________________
>  Envoyé avec Yahoo! Mail.
> Une boite mail plus intelligente.
> -------------------------------------------------------------------------
> Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
> Studies have shown that voting for your favorite open source project,
> along with a healthy diet, reduces your potential for chronic lameness
> and boredom. Vote Now at http://www.sourceforge.net/community/cca08
> _______________________________________________
> Nagios-users mailing list
> Nagios-users at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/nagios-users
>
> ::: Please include Nagios version, plugin version (-v) and OS when
> ::: reporting any issue. Messages without supporting info will risk being
> ::: sent to /dev/null



-- 
Christian Schneemann

-------------------------------------
SUSE LINUX Products GmbH,
Maxfeldstr. 5, D - 90409 Nürnberg

Phone:  +49 (0)911 - 740 53 0
e-mail: cschneemann at suse.de
-------------------------------------
SUSE LINUX Products GmbH, GF: Markus Rex
HRB 16746 (AG Nürnberg)

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Nagios-users mailing list
Nagios-users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue. 
::: Messages without supporting info will risk being sent to /dev/null





More information about the Users mailing list