本系列文章将逐步介绍HP-SNMP的开发流程,开发工具的使用,以及SNMP Agent的开发. 本系列文章主要是记录我的学习,开发的整个过程,以备志,或供朋友们学习和参考.
取名为SNMP++的SNMP(Simple Network Management Protocol)开发包, 是由HP(Hewlett-Packard)公司于1994-1997年开发的.基于C++面向对象语言开发.可实现SNMP的标准协议,有不少的网络开发人员使用,以Windows和Linux平台较多.但是,后来不知什么原因,HP公司没有继续维护升级此SNMP++代码,而是交由其他个体组织继续维护,即是现在的Frank Fock组织.他们在SNMP++基础上,又开发了agent++协议包,用于实现SNMP agent代理;agentX++协议包,用于实现SNMP Sub agent(即二级,三级...代理),以及配套使用的开发工具, 如MibDesigner, AgentPro, MibExplorer等.下面就这几个工具做简单的介绍.(相关的开发工具和开发包可以到网站www.agentpp.com下载).
(1) MibDesigner: 它是设计和编辑SNMP Mib管理信息库的工具.使用它,你可以开始一篇全新的Mib库的设计,或者编辑和更改之前做好的Mib库.所有design工作完成后,你就可以得到一个MibDesigner默认的文件格式的Mib库文件了.或者将它导出保存为txt格式的文本文件.
(2) AgentPro: 生成代码的工具.好了,你在第一步中编辑好的Mib库文件,让AgentPro帮助导入,进行适当的设置后,即可生成Mib库对应的C++代码.这些代码,可以在agent++开发包中使用,这也是你做SNMP agent的关键的一步,它实现了你所有mib库的应用.
(3) MibExplorer: 此工具可以帮助测试agent端,能够完成SNMP Mib库节点的Get/Set操作,接收SNMP Trap信息以及Mib库的结构的浏览.
到这里,我们开发SNMP agent所需的工具已经齐备了.下一步,开始我们的agent的开发旅程吧.
.1 开发工具的使用
.1.1 MibDesigner的安装和使用
安装步骤:
(1) 在网站下载MibDesigner软件安装包MibDesigner.msi.
(2) 下载Java SDK开发包并安装.(目前使用的版本是 j2sdk1.4.2_12,网络搜索即可获得。)
(3) 执行MibDesigner.msi,按照Wizard完成安装.
(4) MibDesigner执行需要license.正版可是要花几百美元购买的.有需要的朋友可以跟我联系,我可以提供帮助.
使用方法:
软件第一次运行,它会提示你设置Repository,这是软件工作的路径.你需要手工指定.完成后,就可以进入到主界面了.如下所示:
选择File->Open->In Current Window,可以打开demomib库,熟悉相关的节点定义等.下面介绍如何创建一个新的mib库文件.(说明一下,在创建新的mib库文件之前,你需要有个设计规划,此规划针对你的SNMP开发需要,定义好你的mib库中需要包含哪些管理信息,trap信息等.)
(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中.这是MibDesigner工具必需的,否则在check时会报错.(据我的经验,在使用AdventNet开发mib库时,就没有这个繁琐的操作.或者从另一个方面来说,MibDesigner的要求更严格!)
.1.2 AgentPro2的安装和使用
安装步骤:
(1) 在网站下载AgentPro软件包,是压缩文件。
(2) 解压到文件夹,执行AgentPro2.exe即可。
注:运行此软件,需要Jave SDK开发包的支持。
使用方法:
软件第一次运行,它会提示你设置Repository,建议将AgentPro2的Resposity设置与MibDesigner一致,这样,修改了Mib库之后,由AgentPro2生成代码比较方便。软件启动后,界面:
如果将Repository设置到/AgentPro2/mibreposity/文件夹,可选择File->Open/Close Mib,打开对话框,选择要打开的示例Mib。这样我们可以浏览此软件处理Mib库的树型结构。下面介绍如何将我们编辑完成的Mib库转换成可用的C++ 代码。
(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文件已经在那了!
经过以上的操作,我们得到了由myMib生成的源代码。在下一篇文章中,我将介绍编译snmp++和agent++的方法和注意步骤。
.1.3 MibExplorer的使用
MibExplorer是一款提供Snmp的Get/Set操作,接收Snmp Trap的软件,跟其他的第三方软件功能类似,使用起来比较简单,暂时不作介绍。
本系列文章将逐步介绍HP-SNMP的开发流程,开发工具的使用,以及SNMP Agent的开发. 本系列文章主要是记录我的学习,开发的整个过程,以备志,或供朋友们学习和参考.
上篇文章介绍了MibDesigner,AgentPro工具的使用。本篇介绍agent++代理端的开发过程。
从网站http://www.agentpp.com下载AGENT++压缩包,解压。头文件在../include/agent_pp目录下;源文件在../src目录下。我们的工作目录在../agentgen/agent下的include和src两个文件夹下。../doc/html文件夹下是AGENT的类结构说明,由 doxygen生成的,在开发的过程中可以参考。
我们设计的MIB库文件暂定为TEST_MIB,由AgentPro工具生成的主要2个文件test_mib.h和test_mib.cpp,分别在../agentgen/agent下的include和src两个文件夹下。针对SNMP的标准操作Get/Set,主要在test_mib.cpp 里实现。