最近研究net-snmp对table对象的代理扩展,遇到一些问题,折腾了几天也没搞定,希望高人能给点指点啊!
下面是我的mib文件列表:
+--lianyiMIB(32189)
|
+--lianyiMIBObjects(1)
|
+--lianyiPublic(1)
|
+-- -RW- Integer32 s1(1)
| Range: 0..2147483647
+-- -RW- String s2(2)
| Size: 0..1024
+-- -R-- String s3(3)
+-- -R-- String s4(4)
|
+--lyTable(5)
|
+--lyEntry(1)
| Index: lyIndex
|
+-- -R-- Integer32 lyIndex(1)
+-- -R-- String lyDescr(2)
| Textual Convention: DisplayString
| Size: 0..255
+-- -RW- EnumVal lyAdminStatus(3)
Values: up(1), down(2), testing(3)
我用mib2c生成两个文件:lianyiPublic.h lianyiPublic.c
这两个文件中自然不包含lyTable部分的内容,然后对这两个文件进行更改后,加入agent中进行编译、make、make install,之
后可以通过snmpwalk -v2c 192.168.12.77 -c public lianyiPublic 可以查看到四个scalar对象的值。
如下:
LIANYI-MIB::s1.0 = INTEGER: 96
LIANYI-MIB::s2.0 = ""
LIANYI-MIB::s3.0 = Hex-STRING: 07 00 00 00 6C 75 65
LIANYI-MIB::s4.0 = Hex-STRING: 07 00 00 00 6C 75 65
这说明scalar的扩展正确!
下面我对Table进行扩展。
我的做法是:
用 mib2c -c mib2c.mfd.conf lyTable 生成一些文件;然后对文件进行简单的更改,只更改会影响程序编译执行的部分,
同时为变量赋了些固定的值。
之后,我在lianyiPublic.h文件中增加:
config_add_mib(LIANYI-MIB)
config_require(util_funcs)
config_require(lyTable)
config_require(lyTable_interface)
config_require(lyTable_data_access)
config_require(lyTable_data_get)
config_require(lyTable_data_set)
在lianyiPublic.c文件中增加:
#include "lyTable.h"
然后用以下命令重新编译agent:
./configure -with-mib-modules="lianyiPublic lyTable"
(./configure -with-mib-modules="lianyiPublic"的方式也采用过)
make
make install
snmpd
snmpwalk -v2c 192.168.12.77 -c public lianyiPublic
结果提示:
LIANYI-MIB::s1.0 = INTEGER: 96
LIANYI-MIB::s2.0 = ""
LIANYI-MIB::s3.0 = Hex-STRING: 07 00 00 00 6C 75 65
LIANYI-MIB::s4.0 = Hex-STRING: 07 00 00 00 6C 75 65
没有显示出lyTable中的对象;
snmpwalk -v2c 192.168.12.77 -c public ifTable
结果提示:
LIANYI-MIB::lyTable = No Such Object available on this agent at this OID。
我的问题就是:上面为什么不能正常显示ifTable中对应的值?也即:为什么ifTable加载失败?
2 个解决方案
#1
你现在这个问题解决了吗?我也有类似的问题,如果解决了,拿出来分享一下好吗?
#2
帮顶一下。。。。
#1
你现在这个问题解决了吗?我也有类似的问题,如果解决了,拿出来分享一下好吗?
#2
帮顶一下。。。。