forum.bitel.ru
http://forum.bitel.ru/

SNMP value type Unsigned Int
http://forum.bitel.ru/viewtopic.php?f=44&t=9235
Страница 1 из 1

Автор:  aiwbend [ 14 май 2014, 16:08 ]
Заголовок сообщения:  SNMP value type Unsigned Int

В стандартном наборе библиотек есть классы для работы c SNMP.
Столкнулся с проблемой отправки OID со значением в формате Unsigned Integer, читая гугл я извращался как только мог но все безрезультатно.

Резал байты, юзал uk.co.westhawk.snmp.stack.AsnUnsInteger из набора либ BGBilling'a
Цитата:
new AsnUnsInteger(Long.valueOf(1)).getValue();

но всерано получаю в логах акаунтинга ru.bitel.bgbilling.common.BGException: uk.co.westhawk.snmp.stack.AgentException: Bad value error...

Есть у кого нибудь успешный опыт отправки OID c Unsigned Integer value из Java? Не хочется на стороне лишние скрипты городить.

PS Еще наткнулся в API Java8 на функционал для этой задачи вроде... )

Автор:  Amir [ 14 май 2014, 16:28 ]
Заголовок сообщения:  Re: SNMP value type Unsigned Int

А если просто AsnInteger - та же ошибка?

Автор:  stark [ 14 май 2014, 16:37 ]
Заголовок сообщения:  Re: SNMP value type Unsigned Int

Используйте
http://bgbilling.ru/v6.1/javadoc/ru/bit ... lient.html

Там это реализовано.

Автор:  aiwbend [ 14 май 2014, 17:08 ]
Заголовок сообщения:  Re: SNMP value type Unsigned Int

Amir писал(а):
А если просто AsnInteger - та же ошибка?

Ага таже. :(

stark писал(а):
Используйте
http://bgbilling.ru/v6.1/javadoc/ru/bit ... lient.html

Там это реализовано.

Чего реализовано? )
Я им и отправляю, я не могу получить нужный тип данных описанный выше.


Для наглядности

В консоле из snmpset все отрабатывает
Цитата:
snmpset -v2c -c xxx 10.147.51.251 1.3.6.1.4.1.35265.1.21.16.2.1.25.255.158 i 1
snmpset -v2c -c xxx 10.147.51.251 1.3.6.1.4.1.35265.1.21.16.2.1.21.255.158 u 1


В java:
Код:
this.onTvFlag = 0; //int
this.offTvFlag = 1; //int
this.enableFlag = new AsnInteger(1).getValue();

this.toggleTvOidObject = new AsnObjectId("1.3.6.1.4.1.35265.1.21.16.2.1.25.255");
this.reconfigHardwareOidObject =  new AsnObjectId("1.3.6.1.4.1.35265.1.21.16.2.1.21.255");

servInterface = serviceActivatorEvent.getNewInetServ().getInterfaceId();

toggleTvOidObject.add(Integer.toString(servInterface));
reconfigHardwareOidObject.add(Integer.toString(servInterface));

toggleTvOid = toggleTvOidObject.getOid();
reconfigHardwareOid = reconfigHardwareOidObject.getOid();

snmpClient.set( toggleTvOid, -1 , onTvFlag); //работает
snmpClient.set( reconfigHardwareOid, -1 , enableFlag );//чего только не пихал не работает

Автор:  Amir [ 14 май 2014, 17:19 ]
Заголовок сообщения:  Re: SNMP value type Unsigned Int

А почему в snmpset 25.255.158, а в коде 25.255?

Автор:  stark [ 14 май 2014, 17:25 ]
Заголовок сообщения:  Re: SNMP value type Unsigned Int

aiwbend писал(а):
Amir писал(а):
А если просто AsnInteger - та же ошибка?

Ага таже. :(

stark писал(а):
Используйте
http://bgbilling.ru/v6.1/javadoc/ru/bit ... lient.html

Там это реализовано.

Чего реализовано? )
Я им и отправляю, я не могу получить нужный тип данных описанный выше.


Для наглядности

В консоле из snmpset все отрабатывает
Цитата:
snmpset -v2c -c xxx 10.147.51.251 1.3.6.1.4.1.35265.1.21.16.2.1.25.255.158 i 1
snmpset -v2c -c xxx 10.147.51.251 1.3.6.1.4.1.35265.1.21.16.2.1.21.255.158 u 1


В java:
Код:
this.onTvFlag = 0; //int
this.offTvFlag = 1; //int
this.enableFlag = new AsnInteger(1).getValue();

this.toggleTvOidObject = new AsnObjectId("1.3.6.1.4.1.35265.1.21.16.2.1.25.255");
this.reconfigHardwareOidObject =  new AsnObjectId("1.3.6.1.4.1.35265.1.21.16.2.1.21.255");

servInterface = serviceActivatorEvent.getNewInetServ().getInterfaceId();

toggleTvOidObject.add(Integer.toString(servInterface));
reconfigHardwareOidObject.add(Integer.toString(servInterface));

toggleTvOid = toggleTvOidObject.getOid();
reconfigHardwareOid = reconfigHardwareOidObject.getOid();

snmpClient.set( toggleTvOid, -1 , onTvFlag); //работает
snmpClient.set( reconfigHardwareOid, -1 , enableFlag );//чего только не пихал не работает


так вам там значение 1 надо передать ? Тогда зачем вам unsigned int вообще ? Я думал вам нужно передать значение, которое выходит за границу signed int-диапазона(например 0xFFFFFFFF) . А значение 1 что в signed, что в unsigned одинаковое будет .

Автор:  aiwbend [ 14 май 2014, 23:41 ]
Заголовок сообщения:  Re: SNMP value type Unsigned Int

Amir писал(а):
А почему в snmpset 25.255.158, а в коде 25.255?

там далее интерфейс сервиса добавляет в long массив, а потом забирает oid и отправляет...

stark писал(а):
так вам там значение 1 надо передать ? Тогда зачем вам unsigned int вообще ? Я думал вам нужно передать значение, которое выходит за границу signed int-диапазона(например 0xFFFFFFFF) . А значение 1 что в signed, что в unsigned одинаковое будет .


да 1 нужно, просто интром пробовал не понимает устройство...

Автор:  aiwbend [ 14 май 2014, 23:49 ]
Заголовок сообщения:  Re: SNMP value type Unsigned Int

Блин я похоже опростафилился.
Я юзал SNMP v1, а судя по табличке(http://i.stack.imgur.com/XEvyP.png) там не поддерживается unsigned int, и из линуха юзалась вторая версия...
Утром попробую v2.

Автор:  aiwbend [ 15 май 2014, 09:46 ]
Заголовок сообщения:  Re: SNMP value type Unsigned Int

C v2 тоже не работает, только теперь явно в логах на тип ругается.
Цитата:
uk.co.westhawk.snmp.stack.AgentException: Wrong type error

Пихал единичку по всякому тоже...


...фуф, запихал в new SetPdu(snmpClient.getSnmpContext()) все отправилось с AsnInteger(1).
Бага в клиенте мб, спасибо за ответы.

Автор:  aiwbend [ 15 май 2014, 16:10 ]
Заголовок сообщения:  Re: SNMP value type Unsigned Int

В пду стеке тоже не отправляет, там просто ероров нет.

А вот так наконец то отправляет, мб пригодится кому нибудь.
Цитата:
snmpClient.set(saveCfgOid, -1, new AsnUnsInteger(1L, SnmpConstants.SMI_V2_UINTEGER32));

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/