http://bbs.ednchina.com/BLOG_ARTICLE_5522.HTM
SNMP++,AGENT++设计。
MibDesigner MIB设计器。
AgentPro MIB代码生成器。
MibExplorer MIB browser。
1、下载代码:www.agentpp.com。agenpro4.jar,mibdesigner.jar,mxp-pro.jar。这些需要先安装java jdk(官网慢),配置系统参数。然后直接双击agenpro4.jar等即可。
2、设计MIB:
(1) 选择File->New->In Current Window,弹出New Mib Winzard对话框.在Common Object Name Prefix文本框中,输入你的mib库节点命名的前缀信息,它最好能表示你的公司或个人的信息.在New Mib Module Name 文本框中输入mib库文件的名称,建议大写,以保持风格统一.点击Next执行下一步.
(2) 进入到Wizard第二步.如果你是企业用户,则将第一个复选框选上.点击Next进入第三步,采用默认设置,点击Finish,完成Wizard引导.
(3) 这时,就可以看到设计的mib库已经有了框架结构了.接着,我们就可以开始设计和添加mib节点啦.
mib节点的属性包括只读,只写,可读写,可创建这几种类型.根据不同的需求,设置不同的属性.
添加完成所有的mib节点后,执行View->Check,来检查你编辑的mib库的正确性.这里需要注意,你之前添加的所有节点必须包括在Group中(添加一个group,然后在这个group添加所有的成员).这是MibDesigner工具必需的,否则在check时会报错.(据我的经验,在使用AdventNet开发mib库时,就没有这个繁琐的操作.或者从另一个方面来说,MibDesigner的要求更严格!)
2、生成代码(工具还是需要自己去熟悉)
(1-2)file/set brepository 将agenpro4\mibrepository添加进来。将之前做好的MIB文件放到agenpro4\mibrepository,然后File->Open/Close Mib打开它。
(1) 将MibDesigner编辑好的Mib库文件(本文中使用myMib作为示例)放到Repository文件夹中,这样我们就可以方便的打开它。
(2) File->Open/Close Mib,打开myMib。这时,我们可以看到Mib的树型结构,与在MibDesigner中看到的一样。
(3) 现在需要设置Project,这是保证顺利生成源代码的关键。对于大部分使用者,为了方便,作为示例,我们选择Project->Open,指定文件到/AgentPro2/projects/agent++v3.5.17.prj,选定。这样我们需要的工程模板就有了。选择Project->Edit,打开的界面如下:
我们可以看到,这个工程文件,配置了生成源代码所需的各个模板,include模板,Makefile模板,module_init模板,header文件模板,source文件模板。这些模板文件放在/AgentPro2/templates/agent++v3.5.17/文件夹。我们可以修改这些模板的指定路径。在Project Winzard对话框,选择某一项后,Edit即可。同时,需要设定生成的目标文件存放的路径,默认路径是..\agent++\agentgen\agent\include和..\agent++\agentgen\agent\src\。保持此默认值,后面编译时用的方便。这里有一点需注意,在v3.5.17版本,模板存在一个bug,不能正常编译(具体什么bug,可以自己研究研究:)。所以,我们不妨把所有模板都选用v3.5.23。
(4) Project->Edit打开Project Winzard对话框,执行Next,第二步不需要设置,Nex到第三步,将已经打开的myMib库的所有模块添加到Mibs to Process,然后Finish。这样,就指定好了所有需要生成源代码的Mib库模块。
(5) 经过一番设置,终于可以生成代码了!执行Project->Generate,等待几秒钟,OK。转到我们之前指定的生成目录文件夹下,好了,所有的h和cpp文件已经在那了!
3、使用snmp++,agent++等
官方下载:
AGENT++v4.0.3(3),SNMP++v3.3.4(2),MS VC++ 12 Project Files(VS2013工程),LIBDES-l-4.01a(必须库1),agentx++-2.0.1(x)
编译顺序1-2-3
将他们解压到一个目录下,使用VS2013打开他们(依次编译生成libdes.lib,SNMP++.lib,snmpWalk.exe,AGENT++.lib,SampleAgent.exe)。顺利编译成功,使用对应的样例执行程序跑,可以通过。先理解到这里,加入自己的MIB代码。以及理解AGENTX++
(a). 在agent.cpp中的init里面添加我们的初始化函数:mib.add(new new_snmp_mib(&mib));
(b).编译后一般可以对SCALAR进行访问。
(c).生成的代码关于TABLE却不能获得信息。需要在new_snmp_mib_aeiEntry::new_snmp_mib_aeiEntry():
{//添加
add_col(new MibLeaf(col_NEW_SNMP_MIB_AeiEntryCol4, READONLY, new NS_SNMP Counter64())); MibTableRow* r = add_row("1"); set_row(r, "xxxfd", 2, 0, 112);
}
add_row添加一行数据,行号为1
set_row对本行写入参数。
SNMPV3 can be undefined in snmp++/include/config.h
库:mibleaf是树叶,一个元素。scalar,table里面的一个项。添加一枝叶有OID,access,smi.h定义了数据类型。还有个参数不知。
mibtable是订制表格的。
|