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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部