if-mib上的SNMP4J bulkwalk

时间:2015-01-07 12:43:19

标签: snmp net-snmp snmp4j

我正在使用snmp4j.jar。我想在if-table上进行snmpwalk以从所有行获取ifDescr。使用netsnmp: snmpwalk -v2c -c**** -t 1 1.2.3.4 ifDescr我能得到......

IF-MIB::ifDescr.1 = STRING: ATM0

IF-MIB::ifDescr.2 = STRING: Ethernet0
....

我想使用snmp4j做同样的事情。知道怎么做吗?我按照一些教程,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

以下是代码的片段。希望它对某人有所帮助。

public Map<String, InterfaceInfoObject> getTableAsStrings(OID[] oids, String communityString) {
        TableUtils tUtils = new TableUtils(snmp, new DefaultPDUFactory());
        List<TableEvent> events = tUtils.getTable(getTarget(), oids, null, null);
        Map<String,InterfaceInfoObject> indexMap = new LinkedHashMap<String,InterfaceInfoObject>();
        for (TableEvent event : events) {
            if(event.isError()) { 
                throw new RuntimeException(event.getErrorMessage());
            }
            for(VariableBinding vb: event.getColumns()) {
                InterfaceInfoObject infterfaceInfo = new InterfaceInfoObject();
                String oid = vb.getOid().toString();
                String index = event.getIndex().toString();
                String colValue = vb.getVariable().toString();
                    if(indexMap.containsKey(index)){
                        getInferfaceObjectAndsetValues(indexMap, oid, index, colValue);
                    }else{
                        putInferfaceInfoObjInMap(indexMap, infterfaceInfo, oid, index,
                                colValue);
                    }
            }
        }
        return indexMap;
相关问题