我所知道的添加自定义MIB的方法有三种
1.静态加载,将生成的.c和.h文件加入到相应的位置,重新编译snmp库,优点是不需要修改配置文件,缺点是每次添加都得重新编译;
2.动态加载,将生成的.c和.h文件再编译成.so库,修改snmpd.conf配置文件。优点是每次添加不需要重新编译,缺点是必须支持dlmod命令;
3.子代理扩展,将生成的.c和.h文件编译成可执行程序,运行该程序和snmpd即可,优点是操作简单,缺点是需要运行两个程序才行。
三种方法的前几步是一样的,都是编写MIB,生成.c和.h文件,补全.c文件。
1.编写MIB
MIB的语法见
http://blog.youkuaiyun.com/shanzhizi/article/details/15340305,写得很清楚,很详细。
下面给出我自己的MIB文件。
-- Test-SLK-MIB.txt
Test-SLK-MIB DEFINITIONS ::= BEGIN
IMPORTS
OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP
FROM SNMPv2-CONF
enterprises, Integer32, Unsigned32, OBJECT-TYPE, MODULE-IDENTITY,
NOTIFICATION-TYPE
FROM SNMPv2-SMI
DisplayString
FROM SNMPv2-TC;
Test MODULE-IDENTITY
LAST-UPDATED "201601221450Z" --必须以Z结尾
ORGANIZATION
""
CONTACT-INFO
""
DESCRIPTION
"Video's Server MIB."
::= { enterprises 745352 }
Time OBJECT IDENTIFIER ::= { Test 1 }
GetTime OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Example : 2016/1/22"
::= { Time 1 }
END
-- Test-SLK-MIB.txt
这个MIB文件很简单,只有一个OID 1.3.6.1.4.1.745352.1.1,把这个MIB放入MIBS文件夹,我的位于/usr/local/snmp/share/snmp/mibs。
2.生成.c和.h文件
运行命令mib2c Test-SLK-MIB::Test 出现的选项依次选2和1.