原创 SNMP++&Agent++开发之一(原创)

2006-11-3 22:11 10701 7 100 分类: 软件与OS

    本系列文章将逐步介绍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的软件,跟其他的第三方软件功能类似,使用起来比较简单,暂时不作介绍。

文章评论93条评论)

登录后参与讨论

用户377235 2015-9-15 14:39

楼主您好,可以发一份MIB designer的license吗?zmbc48@163.com谢谢!!

用户1835512 2015-4-20 17:21

楼主您好,可以发一份MIB designer和Mib Explorer的license吗 ? hxxjava@163.com非常谢谢!

用户377235 2015-3-30 16:47

楼主您好,可以发一份MIB designer和Mib Explorer的license吗?732148004@qq.com非常谢谢!!

用户1616467 2015-3-14 14:15

楼主您好,可以发一份MIB designer的license吗? panda_hx@126.com谢谢!!

用户377235 2015-1-30 16:54

您好,能发我一份licence吗?邮箱:fzq_mf@163.com

用户377235 2014-11-12 22:15

你好,如果能把你的License 发给我一份么,将不胜感激。我的邮箱iluv2008@sina.com

用户377235 2014-11-12 21:56

你好,能把你的MibDesigner license ,发给我么?806096050@qq.com,非常感谢!!!

用户377235 2014-9-15 22:01

楼主急需你的licence, viva_6059@163.com,跪谢

用户377235 2014-5-15 20:19

博主,给个Licence吧,急啊!!邮箱:xuefenyang@163.com.

用户377235 2014-5-15 11:50

能不能给这三个软件的licence,不胜感激啊,毕业论文都指望这东西了,谢谢啊,邮箱:xuefenyang@163.com,谢谢!!1
相关推荐阅读
leejey_376670058 2011-05-05 16:22
C语言中auto,register,static,const,volatile的区别
1)auto  这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是au...
leejey_376670058 2009-08-14 17:24
【转】状态机的两种写法
状态机的两种写法 有限状态机FSM思想广泛应用于硬件控制电路设计,也是软件上常用的一种处理方法(软件上称为FMM--有限消息机)。它把复杂的控制逻辑分解成有限个稳定状态,在每个状态上判断事件,变连续处...
leejey_376670058 2009-08-14 17:11
【转】HDL状态机写法
关于状态机写法的总结前几天在论坛上跟大家讨论了一下关于状态机风格写法的问题,应要求我今天在这里做一个简单的总结。现在大家比较统一的观点是,状态机的写法应该是用三段式写法,即第一部分说明初始状态,cur...
leejey_376670058 2009-07-17 17:07
(转载)TTL电平与CMOS电平
TTL电平与CMOS电平 TTL电平信号被利用的最多是因为通常数据表示采用二进制规定,+5V等价于逻辑"1",0V等价于逻辑"0",这被称做TTL(晶体管-晶体管逻辑电平)信号系统,这是计算机处理器控...
leejey_376670058 2009-06-22 17:44
二极管基础知识
1、作用:二极管的主要特性是单向导电性,也就是在正向电压的作用下,导通电阻很小;而在反向电压作用下导通电阻极大或无穷大。正因为二极管具有上述特性,无绳电话机中常把它用在整流、隔离、稳压、极性保护、编码...
leejey_376670058 2007-10-12 11:38
堆和栈的区别 (转贴)
堆和栈的区别 (转贴) 非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)...
我要评论
93
7
关闭 站长推荐上一条 /2 下一条