安装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