LINUX.ORG.RU

Net::SNMP Perl


0

0

Есть такой скрипт:
use Net::SNMP;
push(@request,"1.3.6.1.4.1.171.12.9.3.2.1.4.1.1",IPADDRESS,"192.168.1.1"));
push(@request, ("1.3.6.1.4.1.171.12.9.3.2.1.21.1.1",INTEGER,2));
push(@request, ("1.3.6.1.4.1.171.12.9.3.2.1.22.1.1",OCTET_STRING,"0000000000000001"));
push(@request, ("1.3.6.1.4.1.171.12.9.3.2.1.25.1.1",INTEGER,4));
($session,$error)=Net::SNMP->session(Hostname=>$switch,Community=>$community,Ve
rsion=>'2');
    die "Ошибка сеанса: $error" unless ($session);
$result = $session->set_request(-varbindlist=>[@request]);
    die "Ошибка запроса: ".$session->error unless (defined $result);
$session->close;
}

Выдает:
Ошибка запроса: Received wrongValue(10) error-status at error-index 3 at ./snmp.pl line 8.

Ошибка в это строчке(задает номер порта hex):
push(@request, ("1.3.6.1.4.1.171.12.9.3.2.1.22.1.1",OCTET_STRING,"0000000000000001"));
Что может быть?
★★

А устройство понимает эту команду? В том смысле что snmpset выполняет эту последовательность команд? Может hex значение надо передавать с 0x префиксом?

mky ★★★★★
()
Ответ на: комментарий от mky

snmpset скармливаю: 
1.3.6.1.4.1.171.12.9.3.2.1.4.1.1 a 192.168.1.1 
1.3.6.1.4.1.171.12.9.3.2.1.21.1.1 i 2 
1.3.6.1.4.1.171.12.9.3.2.1.22.1.1 x 0000000000000001 
1.3.6.1.4.1.171.12.9.3.2.1.25.1.1 i 4
и все проходит!!!

lioncub ★★
() автор топика
Ответ на: комментарий от lioncub

OCTET_STRING это последовательность байт
а не просто строка символов.
Вам надо перевести строку 0000000000000001 в строку байтов 00 00 00 и т.д.

gibbon
()
Ответ на: комментарий от lioncub

блин! ну нельзя же так тупить!
push(@request, ("1.3.6.1.4.1.171.12.9.3.2.1.22.1.1",OCTET_STRING,chr(0).chr(0).chr(0).chr(0).c hr(0).chr(0).chr(0).chr(1)));

вот так например

gibbon
()
Ответ на: комментарий от gibbon

gibbon спасибо! реально не мог найти...

lioncub ★★
() автор топика
Ответ на: комментарий от gibbon

а с помощью pack/unpack можно сделать?

lioncub ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.