perl - 从 SNMP 解析主机名和 AP 状态
perl - Resolve hostname and AP status from SNMP
想法是第一个 get_table 从 WLAN 控制器获取 AP 状态,然后它使用 get_request 获取 AP 的主机名,因为它打印出状态 table。我遇到的问题是 $ap_name 作为数组返回,而我只想要单个值。
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});
}
编辑:我对它进行了一些更改,但仍然无法弄清楚下一步是什么。我想我想将打印输出存储到数组中,然后加入它们并为加入的数组打印,但我不确定如何。
编辑:这是我想要的输出:
AP-01 = 1
AP-02 = 1
AP-03 = 2
AP-04 = 1
等..
更多编辑:我将值放入数组中,现在我只是想获得正确的输出。
使用 use List::MoreUtils qw(pairwise) 解决了这个问题;来自 here
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});
}
print pairwise { "$a = $b\n" } @ap_name_array, @ap_stat_array;
打败你@ThisSuitIsBlackNot,无论如何谢谢!
想法是第一个 get_table 从 WLAN 控制器获取 AP 状态,然后它使用 get_request 获取 AP 的主机名,因为它打印出状态 table。我遇到的问题是 $ap_name 作为数组返回,而我只想要单个值。
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});
}
编辑:我对它进行了一些更改,但仍然无法弄清楚下一步是什么。我想我想将打印输出存储到数组中,然后加入它们并为加入的数组打印,但我不确定如何。
编辑:这是我想要的输出:
AP-01 = 1
AP-02 = 1
AP-03 = 2
AP-04 = 1
等..
更多编辑:我将值放入数组中,现在我只是想获得正确的输出。
使用 use List::MoreUtils qw(pairwise) 解决了这个问题;来自 here
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});
}
print pairwise { "$a = $b\n" } @ap_name_array, @ap_stat_array;
打败你@ThisSuitIsBlackNot,无论如何谢谢!