SNMP编程经验总结
冷胜魁(Seaquester)
lengshengkui@gmail.com
2013-10-30
1. MIB模块一般都由变量和表组成。因此net-snmp把SMI中的对象分为两大类:scalar和table。scalar包含我们常用的整型,字符串等数据类型。table是scalar的一种集合,由一个和多个列组成,类似于数据库中的表。它必须有一个索引项,用来按顺序检索表项。
2. mib2c工具通过模版把MIB文件解析成.c和.h文件,但它生成的仅仅是个框架,还需要手工在相应地方添加相应代码。mib2c有很多模版,可以根据需要来调用。mib2c目前不支持同时解析scalar和table对象,对于具有这两种对象的MIB模块,需要分别生成代码文件,然后再合并。
3. 在MIB文件中定义object时,要注意object的名字不能含有下划线“_”,否则,在使用mib2c生成代码时,会提示error:Bad operator (_): At line nn in xx_MIB.txt。
4. 今天在编写一个MIB文件时发现,如果定义的是Table,需要注意Table的名字(名字必须带有Table)。否则,可能无法用mib2c生成代码。
5. 如果MIB文件中有Table,则在用mib2c生成代码之后,需要注意,Table的Index字段可能会被重复定义。需要小心检查。
6. 使用net-snmp的库编写的SNMP Agent模块,支持两种模式。一种是master agent,这种模式的agent不需要snmpd就可以运行。
另外一种是sub-agent,必须要依赖于snmpd才能运行,sub-agent与snmpd之间通过AgentX协议通讯(local socket)。
运行sub-agent之前,必须修改snmpd.conf。最简单的方法是,创建一个新文件,文件内容只包含下面几行:
rocommunity public
rwcommunity private
master agentx
这几行主要是告诉snmpd 启用AgentX协议,sub-agent的community定义等。
然后,先启动snmpd,再运行sub-agent程序。
阅读(6046) | 评论(0) | 转发(0) |