我正在尝试使用 snmp4j 模拟 SNMP 代理。
我正在尝试向代理注册 MO。
下面是代码片段:
static final OID mo1= new OID("1.3.6.1.4.1.1234.1.104");
static final OID mo2= new OID("1.3.6.1.4.1.1234.1.104.1");
static final OID mo3= new OID("1.3.6.1.4.1.1234.1.104.1.1");
agent.registerManagedObject(MOCreator.createReadOnly(mo1,"m1"));
agent.registerManagedObject(MOCreator.createReadOnly(mo2,"m2"));
agent.registerManagedObject(MOCreator.createReadOnly(mo3,"m3"));
public class MOCreator {
public static MOScalar createReadOnly(OID oid,Object value ){
return new MOScalar(oid,
MOAccessImpl.ACCESS_READ_ONLY,
getVariable(value));
}
private static Variable getVariable(Object value) {
System.out.println("Value : "+value.toString());
OctetString octetString = new OctetString((String)value);
if(value instanceof String) {
return octetString;
}
throw new IllegalArgumentException("Unmanaged Type: " + value.getClass());
}
}
启动代理时,我收到 DuplicateRegistrationException。
请指导我如何注册 oid。
请提供方向。
事实上,正如 Seth 所说,OID 的选择似乎是无效的。
假设你有一个带有 OID 的对象1.3.6.1.4.1.1234.1.104
.
Either:
- 它是一个标量,在这种情况下它的值为
1.3.6.1.4.1.1234.1.104.0
, or
- 它是一个表,在这种情况下它有值
1.3.6.1.4.1.1234.1.104.<N>
(但您不注册这些单独的行)。
它也可以是对象组而不是一个对象,例如文件夹,但您也不会注册其中之一。
标量下不能有标量(或表),因此无法向代理注册它们。
如果不知道你的 MIB 是什么样子,你想保存什么类型的数据以及你想如何组织它,我无法提出具体的建议,但看起来你在这里有一个 MIB 设计问题。一定要跑smilint
通过您的 MIB 来验证正确性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)