一:我该如何创建自己的MIB?
首先:要定义自己的MIB,要先熟悉ASN.1的语法,其中有个老外的一本MIB书很好,MIB的RFC文档就是它定义的好像。
其次:多看其他的MIB,其实定义比较简单,就是TYPE,标量,表三个主要的东西。
二:我实现一个代理进程,如果捕获SNMP的端口信息那同一机器上另外的代理进程不就没办法捕获管理信息了吗?我的代理进程只对特定的OID进行服务,如果不属于我的OID,我如何将其交给系统中存在的其他代理进程处理?
这个问题就是扩展代理了,就是扩展Agent,在windows下面的SNMP系统服务,你可以直接用扩展来做的,这样就可以吧你新加的OID添加到系统的snmp服务中,这些编程相对很简单,在MSDN中有介绍,好像是snmpExtensionXXX,记不太清楚了!
三:在被管设备中究竟存不存在一个MIB?我的理解,是不是只在管理者进程中收集各个被管设备的信息形成一个MIB,而在被管设备中没有真正的MIB存在?
你的理解不对的,MIB是Management Information Base是受管的信息数据库,这些信息都是保存在Agent端的,Agent广义上的概念其实包括两个部分,一个是狭义的Agent,(就是接受网络SNMP协议,返回信息),另外一个就是MIB信息的组织了。
四:我要夸平台管理,代理进程和管理者进程分别用什么实现方便呢?
方便的方法:
有两个开放的SNMP开发库,也是现在用的最多的!一个net-snmp,一个是snmp++,都可以夸平台,但是net-snmp是基于c语言的,而snmp++是基于C++的,并且一般多用于Windows,反之net-snmp多用于Linux!
希望对你有所帮助,
书籍嘛!有一个《SNMP简单网络管理协议的原理和应用》不错!其他的么!我觉得看RFC文档就够了,RFC1213(MIB-II)等等!
还可以参看我前天写过的帖子:
http://expert.csdn.net/Expert/topic/2733/2733482.xml?temp=.6372797