SNMP4J Как имитировать запрос GETBULK?

Мне нужно смоделировать запрос GETBULK с помощью snmp4j в java. Но я не понимаю, как это сделать. Более конкретно, я не понимаю, как создать TreeEvent для создания списка ответов и как ответить клиенту.

У меня есть snmpwalk, как это

public void sendWalk(String community, String ipAddress, int port, String oidValue, int retries, long timeoutMillis) throws IOException {

    CommunityTarget comtarget = new CommunityTarget();
    comtarget.setCommunity(new OctetString(community));
    comtarget.setAddress(new UdpAddress(ipAddress + "/" + port));
    comtarget.setRetries(retries);
    comtarget.setTimeout(timeoutMillis);
    comtarget.setVersion(snmpVersion);


    OID oid = new OID(oidValue);

    TreeUtils treeUtils = new TreeUtils(snmp, new DefaultPDUFactory());
    List<TreeEvent> events = treeUtils.walk(comtarget, new OID[]{oid});
    if(events == null || events.size() == 0) {
        // TODO inserire in allarm manager ???
        log.warn(" No events . Request[Oid:"+oidValue+"]");
    }else{
        parseWalkResult(events);
    }

}

snmpwalk на SNMP4J - это запрос GETBULK, затем я хочу реализовать макет ответа в методе treeUtils.walk и получить список TreeEvents в качестве ответа от макета.

Заранее спасибо.


person FiliRnd    schedule 10.01.2018    source источник
comment
Пожалуйста, отредактируйте свой вопрос, чтобы показать код, который у вас есть на данный момент. Вы должны включить хотя бы схему (но желательно минимально воспроизводимый пример) кода, с которым у вас возникли проблемы , тогда мы можем попытаться помочь с конкретной проблемой. Вы также должны прочитать Как спросить.   -  person Toby Speight    schedule 10.01.2018


Ответы (1)


Вы можете использовать SNMP4j для выполнения SNMPBULKWALK на маршрутизаторе. SNMP4j предоставляет приведенный ниже API для синхронного извлечения всего поддерева данного корневого узла.

Класс: TreeUtils.java Метод: getSubtree(targetV2, rootOID);

Он также предоставляет другой метод, который является асинхронным.

Класс: TreeUtils.java Метод: walk(targetV2, rootOID);

У меня есть проект github с полным рабочим кодом. Вы можете клонировать репозиторий github и попробовать его.

person Jinesh Mathew    schedule 19.02.2018