SNMP4J如何模拟GETBULK请求?

时间:2018-01-10 16:51:46

标签: java mocking snmp snmp4j

我需要在java中用snmp4j模拟一个GETBULK请求。但我不明白该怎么做。更具体我不明白如何创建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);
    }

}

对SNMP4J进行snmpwalk是一个GETBULK请求,然后我想在treeUtils.walk方法中实现一个模拟响应,并将Treeofvent列表作为模型的答案。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用SNMP4j在路由器上执行SNMPBULKWALK。 SNMP4j提供以下API以同步检索给定根节点的整个子树。

类:TreeUtils.java方法:getSubtree(targetV2,rootOID);

它还提供了另一种异步方法。

类:TreeUtils.java方法:walk(targetV2,rootOIDs);

我有一个github项目,它有完整的工作代码。您可以克隆github repo并尝试一下。