-----------------------------------------禁止转载-----------------------------------------
在linux下编译net-snmp后,在/usr/local/snmp/bin目录下看到mib2c程序,此程序是根据MIB文件自动生成子代理模块代码的工具。
MIB文件可以自己写,也可以使用MIB Builder软件生成,链接:https://pan.baidu.com/s/1N36NQrTIvZ0SxB7u4tP9xA,提取码:6cqd
下面使用MIB builder生成一个简单MIB文件,test节点是我们要操作的节点,group节点的类型是OBJECT-GROUP,这个节点没啥用,但是在这个软件上必须要建立一个group节点并把test节点添加进来才不会报错,不知道为什么
下面是生成的TEST-MIB.my文件内容(语法其实很简单,可以照葫芦画瓢):
--
-- TEST-MIB.my
-- MIB generated by MG-SOFT Visual MIB Builder Version 6.0 Build 88
-- Tuesday, April 14, 2020 at 16:21:12
--
TEST-MIB DEFINITIONS ::= BEGIN
IMPORTS
OBJECT-GROUP
FROM SNMPv2-CONF
enterprises, Integer32, OBJECT-TYPE, MODULE-IDENTITY
FROM SNMPv2-SMI;
-- 1.3.6.1.4.1.1
a MODULE-IDENTITY
LAST-UPDATED "202004141615Z" -- April 14, 2020 at 16:15 GMT
ORGANIZATION
"Organization."
CONTACT-INFO
"Contact-info."
DESCRIPTION
"Description."
::= {
enterprises 1 }
--
-- Node definitions
--
-- 1.3.6.1.4.1.1.1
b OBJECT IDENTIFIER ::= {
a 1 }
-- 1.3.6.1.4.1.1.1.1
test OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Description."
::= {
b 1 }
-- 1.3.6.1.4.1.1.2
group OBJECT-GROUP
OBJECTS {
test }
STATUS current
DESCRIPTION
"Description."
::= {
a 2 }
END
--
-- TEST-MIB.my
--
将生成的TEST-MIB.my文件放到linux的/usr/local/snmp/share/snmp/mibs/目录下,然后使用“sudo /usr/local/snmp/bin/snmptranslate -Tp -IR XXX-MIB::节点”命令可以查看此MIB文件格式是否正常,正常如下,会显示节点树,group节点没啥用,忽略:
MIB文件没问题,就可以执行命令“env MIBS="+/usr/local/snmp/share/snmp/mibs/XXX-MIB.my" /usr/local/snmp/bin/mib2c 节点”,生成代码,生成期间会有选择选项如下:
chens@chens-Lenovo-G400:~$ env MIBS="+/usr/local/snmp/share/snmp/mibs/TEST-MIB.my" /usr/local/snmp/bin/mib2c awriting to -
mib2c has multiple configuration files depending on the type of
code you need to write. You must pick one depending on your need.
You requested mib2c to be run on the following part of the MIB tree:
OID: a
numeric translation: .1.3.6.1.4.1.1
number of scalars within: 1
number of tables within: 0
number of notifications within: 0
First, do you want to generate code that is compatible with the
ucd-snmp 4.X line of code, or code for the newer Net-SNMP 5.X code
base (which provides a much greater choice of APIs to pick from):
1) ucd-snmp style code
2) Net-SNMP style code
Select your choice : 2
*******************