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 )