gpt4 book ai didi

java - ifInOctets 和 ifOutOctets 返回 noSuchInstance

转载 作者:行者123 更新时间:2023-11-30 03:54:32 25 4
gpt4 key购买 nike

我正在编写一个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;
}

那么对于可能出现的问题有什么想法吗?

最佳答案

您需要在.1.3.6.1.2.1.2.2.1.10.1.3.6.1.2.1.2.2.1.16之后指定接口(interface)索引。 (例如,如果索引为 17,请将 .17 附加到两个 OID。)否则,目标服务器不知道您要返回哪个接口(interface)的流量计数器值。

服务器和路由器可以有多个接口(interface),它们分别统计每个接口(interface)上的流量。我无法告诉你正确的接口(interface)索引应该是什么;您必须自己在服务器/路由器上查找。或者,如果您只想返回索引最低的接口(interface)上的流量,则可以使用 GETNEXT 请求而不是 GET。但是,这不一定是正确的界面。

关于java - ifInOctets 和 ifOutOctets 返回 noSuchInstance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23578826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com