Идея состоит в том, что первая get_table получает статус AP от контроллера WLAN, а затем использует get_request для получения имени хоста AP, поскольку он печатает таблицу состояния. Проблема, с которой я столкнулась, - это $ ap_name, возвращаемая как массив, когда мне просто нужно одиночное значение.perl - разрешить имя хоста и статус AP из SNMP
my ($session, $error) = Net::SNMP->session(
-hostname => "$hostaddr",
-community => "$community",
-timeout => "30",
-version => "2c",
-port => "161");
if (!defined($session)) {
printf("ERROR: %s.\n", $error);
exit 1;
}
my $ap_stat = $session->get_table(-baseoid => $ap_stat_oid);
my $ap_name = $session->get_table(-baseoid => $ap_name_oid);
if (! defined $ap_stat || ! defined $ap_name) {
die "Failed to get OID '$ap_stat_oid': " . $session->error;
$session->close();
}
my @ap_name_array;
foreach my $ap_name_key (keys %$ap_name) {
push(@ap_name_array,$ap_name->{$ap_name_key});
}
my @ap_stat_array;
foreach my $ap_stat_key (keys %$ap_stat) {
push(@ap_stat_array,$ap_stat->{$ap_stat_key});
}
Редактировать: Я немного изменил его, но все еще не могу понять, что дальше. Я думаю, что хочу сохранить выходные данные в массивах, а затем присоединиться к ним и распечатать для объединенного массива, но я не уверен, как это сделать.
Edit: Вот мой желаемый результат:
AP-01 = 1
AP-02 = 1
AP-03 = 2
AP-04 = 1
и т.д ..
Больше редактирует: я получил значение в массивы, теперь я просто пытаюсь получить выход направо.
Ссылка на хэш возвращается в режиме блокировки, который содержит содержимое VarBindList. В неблокирующем режиме возвращается истинное значение, если ошибка не возникла. В любом режиме неопределенное значение возвращается при возникновении ошибки. Метод error() может использоваться для определения причины сбоя. – Pradeep
Я тоже это прочитал, но мне нужна get_table в неблокировании. Должен ли я открывать другую сессию только для имени AP? – cflinspach
Это поможет, если вы указали фактические OID, которые используете. – ThisSuitIsBlackNot