环境:
系统:Ubuntu 14.04 LTS
snmp版本:net-snmp-5.7.3
step1.编写自己的MIB文件
这部分内容,网上的资料还是比较多的,自己在挖坑过程中没有遇到太多问题,不啰嗦了。给出一个自己写好的MIB文件,里面包含了一些注释:
QOS-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;
--enterprises就是.1.3.4.1.4.1
-- ::={}格式里定义的就是当前节点的访问地址
--.1.3.6.1.4.1.73691
QosMIB MODULE-IDENTITY
LAST-UPDATED "201803021450Z"
ORGANIZATION
""
CONTACT-INFO
"sedwt-zjzhu"
DESCRIPTION
"XXX's QOS List MIB."
::= { enterprises 73691 }
--定义一个自己的根节点,访问地址为 QosMIB.1,也就是
--.1.3.6.1.4.1.73691.1
--这个根节点下面又定义了3个子节点
--SYNTAX是该节点数据类型,可以自己定义,也可以用标准里定义好的
--MAX-Access是该节点的读写属性,有not-accessible,read-only,read-write,read-create,根据自己需求选择合适的属性,read-create比较特殊,会在下一篇博客中单独讲。
Qos OBJECT IDENTIFIER ::= { QosMIB 1 }
WANDevice OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"参数解释:广域网侧设备。取值范围:4 - 4 ,默认值:4"
::= { Qos 1 }
WANConnectionDevice OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"参数解释:广域网侧连接设备。,取值范围:1 - 1,默认值:1"
::= { Qos 2 }
CID OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"参数解释:CID。取值范围:2 - 20,默认值:2"
::= { Qos 3 }
END
step2.使用mib2c工具生成c文件
写好的MIB文件我们放在用户根目录/.snmp/MIBS/文件夹中,例如我的目录为:
/home/zzj/.snmp/MIBS/QOS-MIB.txt
前一篇博客中,我们已经是搭好了snmp环境的。但是在我过坑的过程中发现,环境的事还没完,比如这里的.snmp目录就是没有的,需要我们手动创建。
如果你问为啥非要是这个目录?其实也一定,哈哈。不过当你后面运行mib2c提示Cannot find module xxx异常时,命令行会输出扫描过的目录,其中就包含.snmp这个目录,你把MIB文件放在它扫描的其他目录也是阔以滴!
ok,跳过了第一个小坑,咱们接着跳。
按照一般攻略,咱们就要执行mib2c生成c文件了。执行前先which mib2c看看环境变量设置好了没:
zzj@sed:/home$ which mib2c
/usr/local/snmp/bin/mib2c
good,看来没问题,接下来就是关键的mib2c。执行如下命令:
zzj@sed:/home$ env MIBS="+/home/zzj/.snmp/mibs/QOS-MIB.txt" mib2c Qos
Can't find a configuration file called mib2c.conf
I looked in:
.
/usr/local/snmp/
/usr/local/snmp/share/snmp/mib2c-data
./mib2c-conf.d
嗯?看来不太对?没看人提起过还有mib2c.conf这个文件啊!各种百度、Google,想着可能是和snmpd.conf类似,然而并不是啊。这里折腾了不少时间,一直没法转成c文件。某天我看net-snmp的安装目录的local文件,发现这里面就有mib2c.conf,而且这里也有mib2c.pl,抱着死马当活马医的心态,在这个目录下试了一下。终于和网上教程对上了有木有!!如下:
zzj@sed:~/net-snmp/net-snmp-5.7.3/local$ env MIBS="+/home/zzj/.snmp/mibs/QOS-MIB.txt" mib2c Qos
writing 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</