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;
}

它正在运行。谢谢你的回答:)