安装net-snmp成功后,确认net-snmp是停止运行状态。
新建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
在/etc/snmp目录下新建snmp.conf文件,并输入以下内容
mibs +My-MIB
检测检查MIB文件是否正确:
snmptranslate -IR -Tp My
结果:
+--My(310)
|
+--Warn(1)
|
+-- -R-- String SysSt(1)
Textual Convention: DisplayString
执行 mib2c -c mib2c.scalar.conf Warn
真确运行后回生成Warn.c和Warn.h,如果mib2c没有正确安装,可执行
[root@localhost ~]#yum -y install net-snmp*
将.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文件会有一点错误,需要手工调整,具体调整如下
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;
在/opt/net-snmp-5.4.1下运行的configure命令,并且添加参数—with-mib-modules=warn,进行MIB库文件的配置。
在/opt/net-snmp-5.4.1下运行make&makeinstall
service snmpd start