向snmp代理注册OID
我正在尝试使用snmp4j模拟SNMP代理。 我想把MOs注册给代理。 下面是代码片段:向snmp代理注册OID,snmp,snmp4j,Snmp,Snmp4j,我正在尝试使用snmp4j模拟SNMP代理。 我想把MOs注册给代理。 下面是代码片段: 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
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。
请提供方向 来自:
SMI禁止在另一个OID(实例)下注册OID
在实例中)。否则,在
如果没有歧义,代理就无法实现
所以我认为这种OID注册方法是不可能的。您应该尝试使用OID而不使用像这样严格的子字符串。或者尝试颠倒注册顺序。确实,正如赛斯所说,选择OID似乎是无效的 假设您有一个OID为
1.3.6.1.4.1.1234.1.104
的对象
要么:
- 它是一个标量,在这种情况下,其值为
,或1.3.6.1.4.1.1234.1.104.0
- 它是一个表,在这种情况下,它有值
(但您不注册这些单独的行)1.3.6.1.4.1.1234.1.104.
smilint
,以验证正确性