我正在编写一个从多个服务器检索一些信息的 java 代码。一切正常,除了 ifInOctets 和 ifOutOctets 返回“noSuchInstance”而不是它们的值。我可以使用 iReasoning MIB 浏览器检索同一服务器的 ifInOctets 和 ifOutOctets。
public Map<String, Object> getStatus() throws IOException{
Snmp snmp4j = new Snmp(new DefaultUdpTransportMapping());
snmp4j.listen();
CommunityTarget target = new CommunityTarget();
Map<String, Object> result = new HashMap<>();
List<Map<String, Object>> servers = new LinkedList<>();
for(SnmpServer snmpServer : snmpServers){
Map<String, Object> server = new HashMap<>();
server.put("name", snmpServer.getName());
List<Map<String, Object>> parameters = new LinkedList<>();
target.setAddress(new UdpAddress(snmpServer.getAddress()));
target.setTimeout(500);
target.setRetries(3);
target.setCommunity(new OctetString("public"));
target.setVersion(SnmpConstants.version2c);
List<String> keys = new ArrayList<>();
PDU request = new PDU();
request.setType(PDU.GET);
request.add(new VariableBinding(new OID(".1.3.6.1.2.1.2.2.1.10")));
keys.add("ifInOctets");
request.add(new VariableBinding(new OID(".1.3.6.1.2.1.2.2.1.16")));
keys.add("ifOutOctets");
request.add(new VariableBinding(new OID(".1.3.6.1.4.1.2021.9.1.9.1")));
keys.add("diskPercentage");
request.add(new VariableBinding(new OID(".1.3.6.1.4.1.2021.4.6.0")));
keys.add("usedMemory");
request.add(new VariableBinding(new OID(".1.3.6.1.4.1.2021.4.5.0")));
keys.add("totalMemory");
request.add(new VariableBinding(new OID(".1.3.6.1.4.1.2021.11.11.0")));
keys.add("idleCpuPercentage");
request.add(new VariableBinding(new OID(".1.3.6.1.4.1.2021.9.1.6.1")));
keys.add("totalDisk");
request.add(new VariableBinding(new OID(".1.3.6.1.4.1.2021.9.1.8.1")));
keys.add("usedDisk");
request.add(new VariableBinding(new OID(".1.3.6.1.2.1.1.3.0")));
keys.add("systemUpTime");
ResponseEvent responseEvent;
responseEvent = snmp4j.send(request, target);
PDU responsePDU = responseEvent.getResponse();
try{
Vector<VariableBinding> variableBindings = responsePDU.getVariableBindings();
for(int j = 0; j < variableBindings.size(); j++){
Map<String, Object> parameter = new HashMap<>();
parameter.put("name", keys.get(j));
parameter.put("value", variableBindings.get(j).getVariable().toString());
parameters.add(parameter);
}
server.put("parameters", parameters);
}catch(NullPointerException e){
server.put("offline", true);
}
servers.add(server);
}
result.put("servers", servers);
return result;
}
那么关于可能是什么问题的任何想法?