在SNMP中,相信大家都不会不知道MIB模块的。那么我们接下来介绍一下MIB模块定义的UCD-SNMP编写过程。那么具体的内容请大家从文章中来了解一下吧。一个简单的MIB模块,接下来, 尝试扩展ucd-snmp代理程序snmpd的几种方式.
首先编写一个需要加入的MIB模块定义文件. 编写MIB模块定义文件的语法, 由SNMP 协议中SMI部分描述. SMI所采用的是ASN.1的一个子集. 具体的描述参见相应的RFC文档. 由于我现在不是很精通如何定义MIB模块, 所以下面借用了ucd-snmp项目组的一个MIB示例文件.
MIB模块定义文件如下:
1) UCD-SNMP-TUTORIAL-MIB.txt
2) UCD-SNMP-TUTORIAL-MIB DEFINITIONS ::= BEGIN
3) IMPORTS
4) ucdExperimental FROM UCD-SNMP-MIB,
5) MODULE-IDENTITY FROM SNMPv2-SMI
6) MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF;
7) ucdSnmpTutorialMIB MODULE-IDENTITY
8) LAST-UPDATED "0005150000Z"
9) ORGANIZATION "UCDavis"
10) CONTACT-INFO "
11) Author: Wes Hardaker
12) University of California at Davis
13) postal: IT-DCAS
14) UCDavis
15) Davis, CA 95616
16) USA
17) email: wjhardaker@ucdavis.edu
18) phone: +1-530-754-7571
19) "
20) DESCRIPTION "A simple mib for demonstration purposes.
21) "
22) ::= { ucdExperimental 4242 }
23) ustMIBObjects OBJECT IDENTIFIER ::= { ucdSnmpTutorialMIB 1 }
24) ustMIBConformance OBJECT IDENTIFIER ::= { ucdSnmpTutorialMIB 2 }
25) ustScalarSet OBJECT IDENTIFIER ::= { ustMIBObjects 1 }
26) ustSSSimpleString OBJECT-TYPE
27) SYNTAX OCTET STRING
28) MAX-ACCESS read-write
29) STATUS current
30) DESCRIPTION
31) "This is a simple test string. It does nothing more than
32) return its current value, and changes values only when set by
33) an incoming SNMP set request."
34) DEFVAL { Hello World }
35) ::= { ustScalarSet 1 }
36) ustSSSecondsSinceChanged OBJECT-TYPE
37) SYNTAX TimeTicks
38) UNITS "1/100th Seconds"
39) MAX-ACCESS read-only
40) STATUS current
41) DESCRIPTION
42) "This object indicates the number of 1/100th seconds since the
43) ustSSSimpleString object has changed. If it is has never been
44) modified, it will be the time passed since the start of the
45) agent."
46) ::= { ustScalarSet 2 }
47) END
该MIB定义文件在MIB树 iso.org.dod.internet.private.enterprise.ucd.ucdExperimental
上定义了一个子树ucdSnmpTutorialMIB, 包含一个ustScalarSet对象, 该对象包含两个变量, ustSSSimpleString和ustSSSenconsSinceChanged. 其中ustSSSimpleString为字符串类型, 可读写. ustSSSenconsSinceChanged为时间类型, 只读, 记录ustSSSimpleString变量自上次修改到现在的时间值. 我们的目的是在代理程序中加入这个模块, 并能通过工具程序获得或设置变量的值. 首先通过工具mib2c生成C代码.