Net-snmp总结(三)-net-snmp的MIBs扩展_添加get
一、编写MIB文件
MIB文件是用 ASN.1 语法来描述的,所以为了精确定义MIB中各管理对象,用户不得不参考一些ASN.1语法的有关文档如RFC1155、RFC1212等等来定义设备自己的MIB。ASN.1是抽象句法表示法一 (Abstract SyntaxNotation One) 的简称,对于每个管理对象它都用文本来描述,一般文件的后缀名都用“.mib”,在net-snmp中后缀名是“.mib.txt”。
关于MIB文件示例,可以见编译安装后的net-snmp目录,一般是 /usr/local/net-snmp/share/snmp/mibs/。
ls/usr/local/net-snmp/share/snmp/mibs/
AGENTX-MIB.txt IPV6-TCP-MIB.txt SNMP-NOTIFICATION-MIB.txt
...
IPV6-MIB.txt SNMP-MPD-MIB.txt UDP-MIB.txt
这里我们建立一个mib文件,命名为TEST-GET-MIB.txt,放在/usr/local/net-snmp/share/snmp/mibs/目录下因为这个目录是snmpd的默认目录,只要把MIB库放入该目录就可以自动加载MIB库,否则需要修改snmpd.conf文件,自定义的MIB文件如下:
--开始
TEST-GET-MIB DEFINITIONS ::= BEGIN--引入部分
IMPORTSenterprisesFROM RFC1155-SMI Integer32,OBJECT-TYPEFROM SNMPv2-SMI DisplayStringFROM SNMPv2-TCTEXTUAL-CONVENTIONFROM SNMPv2-TC; --引用结束,用分号--定义节点
--enterprises的OID是1.3.6.1.4
testGet OBJECT IDENTIFIER ::= { enterprises 77695 }GetTime OBJECT IDENTIFIER ::= { testGet 1}GetTime OBJECT-TYPE --对象名称
SYNTAX DisplayString --类型
MAX-ACCESS read-only --访问方式
STATUS current --状态
DESCRIPTION --描述
"get current time"
::= { testGet 1 } --父节点--结束定义
END
写完后我们测一个MIB库有没有问题,在linux机器上用snmptranslate-Tp -IR TEST-GET-MIB::testGet显示结果如下:(这个测试不需要启动snmpd进程)
[root@localhostbin]# ./snmptranslate -Tp -IR TEST-GET-MIB::testGet
+--testGet(77695)|+-- -R-- String GetTime(1)Textual Convention: DisplayStringSize: 0..255
OK,snmp自动发现了这个MIB库, 有了自定义的OID,接下来开始添加处理程序。
二、生成源代码
我们可以先来获取一下前面定义的 testGet 节点的值试试。 因为 enterprises 的OID是 1.3.6.1.4 ,而 testGet是 enterprises 的叶子(77695),而 GetTime 又是 testGet 的叶子节点(1)。所以其OID
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
