Как настроить идентификатор механизма для отправки ловушки SNMP V3 с использованием SNMP4J?

Я использую snmp4j 2.8.4 и Java 1.8.

Это работает, когда я использую командную строку для отправки ловушек. Например

snmptrapd.conf

authCommunity   log,execute,net public
createUser -e 0x8000000001020304 myuser MD5 mypassword DES mypassword1
authUser log,execute,net myuser noauth

Команда

snmptrap -e 0x8000000001020304 -v 3 -u myuser  -a MD5 -A myjjpassword -x DES -X myjjpassword1 -l noAuthNoPriv 192.168.135.18:162 "" 1.3.6.1.4.1.48183 1.3.6.1.4.1.48183.1 s "smartmon"

На данный момент все было в порядке, но когда я использовал SNMP4J, я не знал, был ли мой идентификатор двигателя настроен неправильно, что привело к сбою ловушки или по какой-то другой причине.

USM usm = new USM(SecurityProtocols.getInstance(), localEngineID, 0);

SecurityModels.getInstance().addSecurityModel(usm);

usm.updateUser(new UsmUserEntry(new OctetString("myuser"),
  new OctetString("0x8000000001020304".getBytes()), new UsmUser(new OctetString("myuser"),
  null,
  null,
  null,
  null)));
snmp = new Snmp(transport);

snmp.setLocalEngine(new OctetString("0x8000000001020304".getBytes()).getValue(),0,0);

snmp.getMessageDispatcher().addMessageProcessingModel(new MPv3(usm));
transport.listen();

Не могли бы вы сказать мне, где у меня проблема с настройкой? Как мне установить идентификатор двигателя? Большое спасибо за ваши ответы.


person sun    schedule 11.08.2020    source источник


Ответы (1)


OctetString использует другое строковое представление, чем NET-SNMP. Таким образом, вам нужно указать свой идентификатор двигателя как:

OctetString.fromString(8000000001020304, 16);

person sun    schedule 14.08.2020