Net::SNMP : get_request : 自动人类可读格式?
Net::SNMP : get_request : automatic Human readable format?
我对 Net::SNMP 有疑问。
当我在执行 unix snmpwalk 时:
snmpwalk -v 2c -c commu_key IP.XXX.XX.XX 1.3.6.1.4.1.9.9.42.1.2.2.1.2.XXX
我得到:
SNMPv2-SMI::enterprises.9.9.42.1.2.2.1.2.3279 = Hex-STRING: 07 9F F4 XX
Hex-STRING 是一个 IP,每个 space 是一个点。
但是当我在脚本中使用 Net::SNMP 时,例如:
my ($session, $error) = Net::SNMP->session(
-hostname => $ip,
-community => 'commu_key',
);
if (!defined $session) {
return 0;
}
my $result = $session->get_request(-varbindlist => [ $oid ],);
if (!defined $session) {
return 0;
}
my $ex = $result->{$oid};
但 $ex 值为:
$ex = 0x079ff4aXX
但我希望它像 snmpwalk 一样:/
有人可以帮我吗?
这真的不难,你至少应该努力过
为了解决这个问题,这里有一个子程序可以满足您的要求
use strict;
use warnings;
use feature 'say';
say spaced_hex(0x079ff499);
sub spaced_hex {
join(' ', unpack '(A2)*', sprintf('%08X', shift));
}
输出
07 9F F4 99
编辑:
我这样做了:
sub hex_ip_converter {
my ($hex) = @_;
my $ip = undef;
my @array = ( $hex =~ m/../g );
shift (@array);
foreach my $tmp (@array) {
$ip = $ip . '.' . hex $tmp;
}
$ip =~ s/^.//;
return $ip;
}
它正在运行。谢谢你的回答:)
我对 Net::SNMP 有疑问。
当我在执行 unix snmpwalk 时:
snmpwalk -v 2c -c commu_key IP.XXX.XX.XX 1.3.6.1.4.1.9.9.42.1.2.2.1.2.XXX
我得到:
SNMPv2-SMI::enterprises.9.9.42.1.2.2.1.2.3279 = Hex-STRING: 07 9F F4 XX
Hex-STRING 是一个 IP,每个 space 是一个点。
但是当我在脚本中使用 Net::SNMP 时,例如:
my ($session, $error) = Net::SNMP->session(
-hostname => $ip,
-community => 'commu_key',
);
if (!defined $session) {
return 0;
}
my $result = $session->get_request(-varbindlist => [ $oid ],);
if (!defined $session) {
return 0;
}
my $ex = $result->{$oid};
但 $ex 值为:
$ex = 0x079ff4aXX
但我希望它像 snmpwalk 一样:/
有人可以帮我吗?
这真的不难,你至少应该努力过
为了解决这个问题,这里有一个子程序可以满足您的要求
use strict;
use warnings;
use feature 'say';
say spaced_hex(0x079ff499);
sub spaced_hex {
join(' ', unpack '(A2)*', sprintf('%08X', shift));
}
输出
07 9F F4 99
编辑:
我这样做了:
sub hex_ip_converter {
my ($hex) = @_;
my $ip = undef;
my @array = ( $hex =~ m/../g );
shift (@array);
foreach my $tmp (@array) {
$ip = $ip . '.' . hex $tmp;
}
$ip =~ s/^.//;
return $ip;
}
它正在运行。谢谢你的回答:)