我使用 net-snmp-5.7.3 包实现了不同的自定义 MIB。例如,自定义 OID 如下:
- .1.3.6.1.4.1.XXXXXX.1.1 //标量
- .1.3.6.1.4.1.XXXXXX.1.2 //标量
- .1.3.6.1.4.1.XXXXXX.3.2 //表
- .1.3.6.1.4.1.XXXXXX.6.1 //标量
- .1.3.6.1.4.1.XXXXXX.6.2 //标量
- .1.3.6.1.4.1.XXXXXX.6.3 //标量
对于字符串 mibs 的类型,我注册的实例如下:
reginfo = netsnmp_create_handler_registration("fwVersion", handle_fwVersion, fwVersion_oid, OID_LENGTH(fwVersion_oid),HANDLER_CAN_RWRITE);
watcher_flags = WATCHER_SIZE_STRLEN;
netsnmp_init_watcher_info6(&watcher_info, fwVersion, strlen(fwVersion),
ASN_OCTET_STR, watcher_flags,
sizeof(fwVersion), NULL);
netsnmp_register_watched_instance(reginfo, &watcher_info);
snmpget 命令适用于标量。但是,snmptable 命令不仅会检索表 OID,还会错误地调用以下标量处理程序。
我已经提到了http://net-snmp.sourceforge.net/dev/agent/data_set_8c-example.html的 data_set 示例
另外,我尝试过使用不同的 mib2c 表配置模板来实现。
有趣的是,如果我检索 net-snmp 包中提供的示例 mib(例如 data_set、netSnmpHostsTable),我的自定义处理程序(因为它们都有后续的 OID)再次被错误地调用。
如何防止 snmptable 错误地调用其他 mib 对象处理程序?这是 snmptable 命令的失败吗?