App-MonM

 view release on metacpan or  search on metacpan

bin/monm_snmp  view on Meta::CPAN

    $SNMPV = SNMP->VERSION;
} catch {
    print STDERR "Module SNMP 5.3.2 is not loaded. Please install Net-SNMP from official site of Net-SNMP project\n";
    print STDERR $_, "\n";
    print ERROR, "\n";
    exit 1;
};
pod2usage(-exitval => 1, -verbose => 99, -sections => 'REQUIREMENTS') unless (is_loaded('SNMP'));
if ($SNMPV < 5.0302) {
    print STDERR "SNMP version need 5.3.2 or more\n";
    print ERROR, "\n";
    exit 1;
}

# Loading MIBs
$ENV{'MIBS'} = $options->{mibs} if $options->{mibs};
&SNMP::initMib();

# Create SNMP::Session
my $snmp = SNMP::Session->new(
        DestHost    => $host,
        Version     => $ver,
        Community   => $community,
        Retries     => RETRIES,
        Timeout     => $timeout,
        UseSprintValue => 1,
) or do {
    print STDERR sprintf("Connect failed to %s (%s)\n", $host, $community);
    print ERROR, "\n";
    exit 1;
};

# Test request
my $testval = '';
try {
    $testval = $snmp->get(TESTOBJ);
} catch {
    print STDERR $_, "\n";
    print ERROR, "\n";
    exit 1;
};
unless ($testval) {
    printf STDERR "SNMP Error [%d]: %s. Can't get data of %s OID. Please check configuration of SNMPD on server %s (%s)\n",
        $snmp->{ErrorNum} ? $snmp->{ErrorNum} : 0,
        $snmp->{ErrorStr} ? $snmp->{ErrorStr} : 'Undefined error',
        TESTOBJ, $host, $community;
    print ERROR, "\n";
    exit 1;
}

my $myobj = '';
my $myval = '';
if ($strictm) {
    $myobj = [$obj];
} elsif ($istable) {
    $myobj = $obj;
} elsif ($obj =~ /^\.?(\d+\.)*\d+$/) {
    if ($obj =~ /\.0$/) {
        $myobj = [$obj];
    } else {
        $myobj = SNMP::Varbind->new([$obj,0]);
    }
} else {
    $obj .= '.0' unless $obj =~ /\.0$/;
    $myobj = [$obj];
}

try {
    $myval = $istable ? $snmp->gettable($myobj) : $snmp->get($myobj);
} catch {
    print STDERR $_, "\n";
    print ERROR, "\n";
    exit 1;
};
$myval = '' unless defined $myval;
if ($snmp->{ErrorNum}) {
    printf STDERR "SNMP Error [%d]: %s. Can't get data of %s OID. Please check configuration of SNMPD on server %s (%s)\n",
        $snmp->{ErrorNum} ? $snmp->{ErrorNum} : 0,
        $snmp->{ErrorStr} ? $snmp->{ErrorStr} : 'Undefined error',
        $myobj, $host, $community;
    print ERROR, "\n";
    exit 1;
}

printf "%s\n", ref($myval) ? explain($myval) : $myval;
print OK, "\n";
exit 0;

__END__



( run in 1.176 second using v1.01-cache-2.11-cpan-2398b32b56e )