Добрый день.
Есть проблема при выдаче мака через модуля perl + net::SNMP.
Через bash работает нормально и данный тип сбора в принципе не интересует.
Раньше похожие проблемы были на DES-3200/A1/B1 ревизии (пустой NULL вывод даже через bash) и были со временем исправлены в прошивках
С чем связана разница вывода, непонятно, возможно отсутствуют какие-либо опции, а возможно выдаётся не правильный тип данных при опросе или неверная обработка модулем.
Однако из разных 5-ти производителей, проблема только на DGS-3620-28SC 1.05D006 и только на коммутаторе с MAC серии 78-54-хх-хх-хх-хх с серийными PVXE1
Dххххххх
Если на оборудовании другой мак и серийный номер, проблемы нет.
use strict;
use warnings;
use Net::SNMP;
my $iphost = "10.90.90.90";
my $snmpcommunity = "public";
my $localmac;
my $snmptemp;
my ($snmpsession, $snmperror) = Net::SNMP -> session(
-timeout => 1,
-retries => 2,
-hostname => $iphost,
-community => $snmpcommunity,
-translate => [-timeticks => 0x0]
);
# Получаем !основной! MAC-адрес с оборудования
$snmptemp = $snmpsession -> get_request(".1.3.6.1.2.1.17.1.1.0");
print "$snmpsession\n"; print "$snmptemp\n";
if (ref($snmptemp))
{
$localmac = $snmptemp -> {".1.3.6.1.2.1.17.1.1.0"};
# $localmac =~ s/^0x//;
}
undef $snmptemp;
print "$localmac"; print "\n";
Код:
Net::SNMP=HASH(0x48472230)
HASH(0x489a9078)
xT.kR