Я пытаюсь сделать snmpwalk для статуса AP на wlc. Я действительно новичок в Perl, так голый со мной, но я работал с this guide. Я смог получить утилиту CPU просто отлично, но это был просто запрос на получение, когда это прогулка.Невозможно использовать неопределенное значение в качестве ссылки HASH
Мой вход: perl test.pl -H 10.192.54.30 -C public -O .1.3.6.1.4.1.14179.2.2.1.1.6.0 -w 20 -c 30
Код:
#!/bin/perl
use strict;
use warnings;
use Net::SNMP;
use Getopt::Long qw(:config no_ignore_case);
my $hostaddr = '';
my $community = '';
my $crit = '';
my $warn = '';
my $oid = '';
GetOptions(
"host|H=s" => \$hostaddr,
"community|C=s" => \$community,
"crit|c:s" => \$crit,
"warn|w:s" => \$warn,
"oid|O=s" => \$oid);
print "$hostaddr $community $crit $warn $oid\n";
my ($session, $error) = Net::SNMP->session(
-hostname => "$hostaddr",
-community => "$community",
-timeout => "30",
-port => "161");
if (!defined($session)) {
printf("ERROR: %s.\n", $error);
exit 1;
}
my $response = $session->get_table(-baseoid => $oid);
if (! defined $response) {
die "Failed to get OID '$oid': " . $session->error;
}
foreach my $key (keys %$response) {
print "$key: $response->{$key}\n";
}
my $err = $session->error;
if ($err){
return 1;
}
print "\n";
exit 0;
Выход:
10.192.54.30 public 30 20 .1.3.6.1.4.1.14179.2.2.1.1.6.0
Can't use an undefined value as a HASH reference at test.pl line 26.
get_request() терпит неудачу в своем коде. Поэтому объект $ response не определен. Вы пытаетесь получить доступ к неопределенному значению. Распечатайте $ err, чтобы получить дополнительную информацию. – user3606329
Я добавил print $ err в строке 29 и получаю тот же результат. – cflinspach
Вы уверены? $ session-> error() должен печатать вам ошибку из get_request(). См. Http://search.cpan.org/~dtown/Net-SNMP-v6.0.1/lib/Net/SNMP.pm#error()_-_get_the_current_error_message_from_the_object – user3606329