首先,我们需要些一个MIB文件。MIB文件是用ASN.1语法来描述的,所以为了精确定义MIB中各管理对象,用户不得不参考一些ASN.1语法的有关文档如RFC1155、RFC1212等等来定义设备自己的MIB。ASN.1是抽象句法表示法一(Abstract Syntax Notation One)的简称,对于每个管理对象它都用文本来描述。
对于其中的MIB描述块在SMI中描述,即SNMPv2-SMI, SNMPv2-CONF等文件中。具体参看相关文件。在我们写的MIB文件中,需要用到SNMPv2-SMI, SNMPv2-CONF等文件中定义的类型时,需要在IMPORTS。。。。FROM语句中说明。编写时一定要注意按照定义中的格式书写,否则编译会出错。
其次,在用MIB2C 编译MIB文件的时候,命令mib2c 后面跟的参数不一定要是我们编写的MIB文件的名字,而应该是在编写的MIB文件中定义在某个子树下的节点的名字。如在下面的文件中就可以使用命令# mib2c AODV 编译,这里该MIB文件是什么名字是无关紧要的。(有时我们需要设置环境变量:# export MIBS=ALL)。还应该注意的是,编写的MIB文件应在/usr/local/share/snmp/mibs目录下面。
最后,我们将产生的AODV.c AODV.h文件放到ucd-snmp源代码目录下agent/mibgroup子目录中。在ucd-snmp源代码目录下按如下序列执行命令:
# ./configure -with-mib-modules=/"AODV/"
# make
# make install
这样, 新的代理程序生成并安装。
可以使用# snmpwalk localhost public AODV 命令察看结果。
附:AODV-MIB.txt
AODV-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY,OBJECT-TYPE,Integer32,
Counter32 enterprises FROM SNMPv2-SMI;
AODV-MIB MODULE-IDENTITY
LAST-UPDATED /"0305040000Z/"
ORGANIZATION /"STAR HUAZHONG INVESTIGATION CENTER/"
CONTACT-INFO
/"/"
DESCRIPTION
/"The MIB module for variables of AODV/"
REVISION /"0104160000Z/"
DESCRIPTION
/"/"
::={ enterprises 2345 }
--- ::={ iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprises(1)
--- AODV-MIB(2345)} 这样写的话可以不用IMPORT enterprises
AODV OBJECT IDENTIFIER ::= { AODV-MIB 1 }
--the variables
TIMEOUT OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
/"/"
::= { AODV 1 }
RREQ OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
/"/"
::= { AODV 2 }
RREP OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
/"/"
::= { AODV 3 }
RERR OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
/"/"
::= { AODV 4 }
RBADPKTS OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
/"/"
::= { AODV 5 }
SREQ OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
/"/"
::= { AODV 6 }
SREP OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
/"/"
::= { AODV 7 }
SERR OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
/"/"
::= { AODV 8 }
END