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。
生命不是一场赛跑,而是一次旅行。比赛在乎终点,而旅行在乎沿途风景。