我是在windows network下做网管的,使用vc++做开发,经过这个几个月工作,
终于找到了门,呵呵。
建议
第一点,网络管理理论知识一定要有,书和RFC。
第二点,把精华区看看。还有友情连接,特别是snmplink这个网站,你在那会发现很多东西。
第三点,作工程的话一定要有编程功底的(这是我欠缺的,为此付出很大代价)
明确两个概念MIB 和 MIB的实现,MIB说白了就是一个文本,给人看得东西,
MIB的实现过程就是编写Agent的过程。一开始我老把MIB理解成一个数据库,
也许它可以作为一个数据库的定义,但是实现时不一定有实际的数据库。
Agent开发
第一步是mib设计(如果你是要实现已有的MIB那么这步就用不到了)
要写出一个mib文档,你要知道SMI,下面的RFC是你需要了解的:
SMIv1
• RFC 1155 - Structure of Management Information
• RFC 1212 - Concise MIB Definitions
SMIv2
• RFC 2578 - Structure of Management Information
• RFC 2579 - Textual Conventions
• RFC 2580 - Conformance Statements
把MIB II(RFC1213)作为例子看一下,定义一个MIB大体的结构,
开始你的MIB设计时,首先确定你要将那些被管对象纳入管理信息库。
结构安排好,具体到各个对象的定义,就是宏的运用:
SMI v1
OBJECTS-TYPE RFC1155
TRAP-TYPE RFC1215
SMI v2
OBJECT-IDENTITY OBJECT-TYPE MODULE-IDENTITY NOTIFICATION-TYPE RFC2578
TEXTUAL-CONVENTION RFC2579
OBJECT-GROUP NOTIFICATION-GROUP MODULE-COMPLIANCE AGENT-COMPABILITIES RFC2580
值得一提的是RFC2580中的这几个宏,主要完成Mib一致性的定义,表明MIB实现时
必须实现的管理对象,这个在SMIv2中必须完成。
还有在一个MIB中不能混用v1和v2,只能用其中一个的格式定义。
最终结果是你写出那个asn.1的文档来。
这一步使用一个记事本就可以,当然也有可视化的mib designer,比如Nudesign Tools,
MG-SOFT BROWER都提供。但是没有注册的话前者设计mib最多只能包含20个节点,后者
不能显示asn.1的文档。在snmplink你还可以找到一些设计工具。
第二步,就是选开发包了,
Windows下适合c++语言的开发包:
M$自身提供一组称为WinSNMP的API(在MSDN里以此为关键字可以找到),而且M$提供
基于Agent Service的SNMP Extension Agent开发。
我使用的开发包是免费的snmp++ agent++(http://www.agentpp.com/),其实就是两个类库,
刚接触感觉比较简单,但是帮助文档太少。
一般与它一起提起的还有一个net-snmp(http://net-snmp.sourceforge.net/ 访问需要国外的代理)
如果有银子,当然可以使用那些比较牛的东东,我接触过得有SNMP Research's EMANATE® Tool Kit
和HP Openview.
当你的开发包定下来,你的mib编译工具也就定了,对于agent++就是agentgen
编译工具的用处就是将你写的asn.1的mib文件编译成你使用的程序语言,
而且是针对你的开发包的。
我用的agentgen(standard,AgentPro要银子的)就最后生成的就是.cpp和.h的文件。
agentgen的用法很简单,自带的manual足够了。
第三步就是你如何编程了,简单的说就是让这个Agent响应get set操作,发发Trap。
在这时用到的理论知识应该是:PDU的格式,SNMP原语和原语操作的过程。
SNMP v1(RFC1157) SNMP v2(RFC1905)
关于snmp++ agent++精华区都有文章,
帮主echrisma 的《hp snmp++攻略》,snmptxy的《agent++在VC下的编译》
在看看它的help,example,特别是后者,上手是不太困难的。
然后就是具体问题具体分析啦。post上来。
如果你上新闻组的话可以定comp.protocols.snmp,Frank Fock就是那个写
Agent++的家伙这个组出没。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/redline2005/archive/2005/04/26/363272.aspx