snmp 获取设备类型_SNMP开发系列(三)SNMP Agent的实现

本文详细介绍了在Linux/pSos等嵌入式环境下,如何实现SNMP Agent,包括MIB库设计、变量操作接口函数编写等技术细节,提供了一套完整的开发指导。
摘要由CSDN通过智能技术生成

SNMP在IT运营、网络设备管理、通信网元管理、物联网上应用广泛。以下章节将分析Linux/pSos等嵌入式环境下SNMP Agent流程特点及使用嵌入式设计SNMP Agent的技术细节(其中涉及到信息模型设计、C/C++语言等内容请各位看官提前学习哈)。本章也可以作为嵌入式下SNMP Agent的软件开发开发指导书。

(一)SNMP协议体系及技术要点

(二)SNMP Agent的设计

(三)SNMP Agent的实现

f5897f49d1724b1c3cc37a202f9e439a.png

1 (三)SNMP Agent的实现

1.1 MIB的创建

创建MIB主要需要完成本设备的MIB库的编写以及利用mibcompiler工具来创建MIB库控制树代码。;

利用 mibcompiler 生成控制文件框架,需要生成的文件有:

以sample.mib为例

sample.ctl //控制框架文件 mibcomp –partial –o sample.ctl sample.mibmib.c //MIB树 mibcomp –mib.c –o mib.c sample.mib sample.ctlleaf.h //叶子节点OID定义 mibcomp –leaf –o leaf.h sample.mib sample.ctlsample.c //访问函数框架 mibcomp –skel –o sample.c sample.mib sample.ctl mibcomp –stub –o sample.c sample.mib sample.ctlsample.h //访问函数头文件 mibcomp –skel.h –o sample.h sample.mib sample.ctl

现在分别描述各部分的开发特点;

1.1.1 设计MIB库

MIB库是SNMP Agent 的基础,可以以从网上获取一个公共的target.mib为基础设计自己的MIB库。

例:sample.mib

-- sample.mib SAMPLE-MIB DEFINITIONS ::= BEGIN --从已有的MIB中引入一些需要的现成数据IMPORTS OBJECT-TYPE, MODULE-IDENTITY, enterprises FROM SNMPv2-SMI DisplayString FROM SNMPv2-TC;-- asbTndTeam-- FROM ASB-MIB; asbRoot MODULE-IDENTITY LAST-UPDATED "9406072245Z" --"20020322" ORGANIZATION  "ASB, Inc." CONTACT-INFO  "ASB in ChenDu. Created by Yangyutong  email: yangyt@sbell.com.cn phone: "DESCRIPTION  "This MIB is the root MIB for ASB, Inc. enterprise."::= { enterprises 5555 } –-定位ASB在MIB中的节点位置  asbTndTeam OBJECT IDENTIFIER ::= { asbRoot 1 } asbExtend OBJECT IDENTIFIER ::= { asbRoot 2 }  -------------------------- dwdmProduction OBJECT IDENTIFIER ::= { asbTndTeam 1 }-- ochPort OBJECT IDENTIFIER ::= { dwdmProduction 1 }-- omsPort OBJECT IDENTIFIER ::= { dwdmProduction 2 }----ochPort叶子节点定义(简单变量)iID OBJECT-TYPESYNTAX DisplayStringMAX-ACCESS read-onlySTATUS currentDESCRIPTION "ochPort iId."::= { ochPort 1 } iOperStatus OBJECT-TYPESYNTAX INTEGER {no(0),yes(1)}MAX-ACCESS read-writeSTATUS currentDESCRIPTION " iOperStatus."::= { ochPort 2 } ---- omsPort configurable parameters--iNeId OBJECT-TYPESYNTAX INTEGERMAX-ACCESS read-writeSTATUS currentDESCRIPTION " iNeId."::= { omsPort 1 } --定义表omsCfgTable OBJECT-TYPESYNTAX SEQUENCE OF OmsCfgEntryMAX-ACCESS not-accessibleSTATUS currentDESCRIPTION "Table."::= { omsPort 2 } --表类型申明omsCfgEntry OBJECT-TYPESYNTAX OmsCfgEntryMAX-ACCESS not-accessibleSTATUS currentDESCRIPTION "An interface entry."INDEX { omsCfgIndex }::= { omsCfgTable 1 } --新的数据类型申明PhyAddr ::=INTEGER{ one(1), two(2), three(3)}  OmsCfgEntry ::= SEQUENCE { omsCfgIndexINTEGER, omsPortTypeINTEGER, mPhyAddrPhyAddr }  omsCfgIndex OBJECT-TYPESYNTAX INTEGERMAX-ACCESS read-onlySTATUS currentDESCRIPTION "Index of this entry."::= { omsCfgEntry 1 } omsPortType OBJECT-TYPESYNTAX INTEGERMAX-ACCESS read-onlySTATUS currentDESCRIPTION "Type of this entry."::= { omsCfgEntry 2 } mPhyAddr OBJECT-TYPESYNTAX PhyAddrMAX-ACCESS read-onlySTATUS currentDESCRIPTION "IpAddress of this interface."::= { omsCfgEntry 3 } END

1.1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值