Net-SNMP的mib2c
今天在搞net-snmp所提供的mib2c tool,
用起来说实在的实在有点难用。
大概是我对它还不太熟的关系吧。
以下是今天弄的一些心得:
(因为开发需求,所以设定prefix为/opt/net-snmp。)
1.
首先,在安装net-snmp时,需在configure时加入以下参数
$ ./configure –prefix=/opt/net-snmp/ –enable-embedded-perl –enable-shared –with-perl-modules
$ make
$ make test
# make install (should be root)
2.
在确定PATH设定好后,执行mib2c时,
通常会遇到讯息说没有安装Perl SNMP Module,
这是因为我们在configure时有设了prefix的关系,
导致perl找不到share library。
解决的方法是将net-snmp的lib目录设定给ldconfig知道即可。
# echo /opt/net-snmp/lib > /etc/ld.so.conf.d/net-snmp.conf
# ldconfig -v
3.
最后就是mib2c操作方法,
据mib2c的manpage里说明,
mib2c的功用是产生template code给agent来扩充功能使用。
Usage为
mib2c [-h] -c CONFIGFILE [-I PATH] [-f OUTNAME] [-i][q][-S VAR=VAL] MIBNODE
而mib2c的使用方法是以mib node为parameter来开始生成template code。
所以必须先将mib file放置在$HOME/.mibs/或/opt/net-snmp/share/snmp/mibs,
然后在环境变数中设定MIBS,
export MIBS=+NET-SNMP-TUTORIAL-MIB
接着麻烦的在这里,
你必须依着你的的mib node来选定所产生的template code的CONFIGFILE。
下面是CONFIGFILE所支援的类型:
如果你要写些scalars所需的code,请用:
mib2c -c mib2c.scalar.conf MIBNODE
如果你要用int scalars,请用:
mib2c -c mib2c.int_watch.conf MIBNODE
一般来讲Table是建议採用MDF:
mib2c -c mib2c.mfd.conf MIBNODE
如果Table Data是在外部时:
mib2c -c mib2c.iterate.conf MIBNODE
如果Table Data是在agent里:
mib2c -c mib2c.create-dataset.conf MIBNODE
承上,如果还需排序时:
mib2c -c mib2c.array-user.conf MIBNODE
如果是要产生Table上任一Column的header时:
mib2c -c mib2c.column_defines.conf MIBNODE
如果是要产生Column上任一Enum的header时:
mib2c -c mib2c.column_enums.conf MIBNODE
4.
结论,大概就是麻烦吧。
Net-SNMP不像其他商用的SNMP套件一样提供简易的开发扩充功能的环境,
像在EMANATE中打一个make就ok了,连型态都自动判断。
不过也许是我对mib2c还不太熟的关系吧,Orz。