Net-SNMP中MIB库的扩展

停止snmpd

安装net-snmp成功后,确认net-snmp是停止运行状态。

创建MIB文件

新建My-MIB.txt文件,文件中的MIB使用的是1.3.6.1.4.1.310作为OID
内容为:

My-MIB DEFINITIONS::= BEGIN
IMPORTS
 enterprises, OBJECT-TYPE, Integer32
    FROM SNMPv2-SMI
 TEXTUAL-CONVENTION, DisplayString
    FROM SNMPv2-TC;
 My OBJECT IDENTIFIER::={enterprises 310}
 Warn OBJECT IDENTIFIER::={My 1}
 
SysSt OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS      read-only
 STATUS      current
 DESCRIPTION "My SysSt"
 ::={Warn 1}
END

拷贝文件

My-MIB.txt拷贝到net-snmp的安装目录下,在我机器上是/usr/share/snmp/mibs

配置snmp.conf

在/etc/snmp目录下新建snmp.conf文件,并输入以下内容

mibs +My-MIB

校验MIB文件

检测检查MIB文件是否正确:
snmptranslate -IR -Tp My
结果:
+--My(310)
   |
   +--Warn(1)
      |
      +-- -R-- String    SysSt(1)
               Textual Convention: DisplayString

编译MIB文件

执行 mib2c -c mib2c.scalar.conf Warn

真确运行后回生成Warn.c和Warn.h,如果mib2c没有正确安装,可执行

[root@localhost ~]#yum -y install net-snmp*


移动.c和.h文件

将.c 和.h文件移动到/opt/net-snmp-5.4.1/agent/mibgroup目录下,如果没有源码可以从 http://sourceforge.net/projects/net-snmp/files/net-snmp/5.5.2/net-snmp-5.5.2.tar.gz/download 进行下载,解压缩到/opt目录下

编辑生成自动生成的.c文件

自动生成的C文件会有一点错误,需要手工调整,具体调整如下

case MODE_GET:
            snmp_set_var_typed_value(requests->requestvb, ASN_OCTET_STR,
                  /* XXX: a pointer to the scalar‘s data */,
                  /* XXX: the length of the data in bytes */);
            break;


改为:
case MODE_GET:
            snmp_set_var_typed_value(requests->requestvb, ASN_OCTET_STR,
            (u_char*)"123"        /* XXX: a pointer to the scalar‘s data */,
            strlen("123")         /* XXX: the length of the data in bytes */);
            break;

重新configure

在/opt/net-snmp-5.4.1下运行的configure命令,并且添加参数—with-mib-modules=warn,进行MIB库文件的配置。

编译安装

在/opt/net-snmp-5.4.1下运行make&makeinstall

启动服务

service snmpd start

验证

snmpwalk -v3 -u newnewuser -l auth -a MD5 -A mypassword localhost  .1.3.6.1.4.1.310
输出
My-MIB::SysSt.0 = STRING: 123

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。