一、      定义MIB库文件:

可使用adventnet工具包下的mibedit工具来定义私有MIB库文件。

二、      在linux环境下安装net-snmp。安装过程如下:

1、  解压源码包:tar –zxvf net-snmp-5.6.1.1.tar.gz

2、  进入解压后的文件目录:cd net-snmp-5.6.1.1

3、  执行文件目录下的configure可执行文件,如果想指定程序包的安装路径,那么您首先建立相应的文件夹来存放安装信息,您可以写成./configure –prefix=/您指定的路径名。参数—prefix用来告诉系统安装信息存放的路径,如果您没有指定路径,直接执行./configure,那么程序包都会安装在系统默认的目录下,通常为:/usr/local下。例如:./configure --prefix=/usr/local/snmp //配置 指定安装目录,安装过程会询问您以下的信息:注意:以下问题似乎不怎么重要,那好像仅仅是官方想了解使用本软件方的信息,可以直接回车而不用回答,系统会采用默认信息,其中日志文件默认安装在/var/log/snmpd.log.数据存贮目录默认存放在/var/net-snmp下。default version of-snmp-version(3): 3(在这里版本通常有三种形式:1,2c,3)Systemcontact information(配置该设备的联系信息): heaven(也可以是邮箱地址)System location (该系统设备的地理位置):BEIJING P.R China

Location to write logfile (日志文件位置): /var/log/snmpd.log

Location to Write persistent(数据存储目录): /var/net-snmp

4、  #make

编译源码包文件,通常只需要执行make命令,系统会根据Makefile层层进行编译,第一次编译需要的时间比较长.如果make成功的话,那么紧接着安装程序了,这一步一般不会出现错误.

#make install

5、  完成以上步骤后net-snmp的开发环境就搭建好了。如果不在PC上使用SNMP服务的话是不需要再进一步配置的。

三、      生成MIB源文件(C格式):

1、 首先需要介绍一下MIB库和C源文件的转换工具命令:

Net-snmp安装包提供了mib2c工具, 用户可使用该工具将MIB库文件转换成C源码格式。命令:MIBS=”+param1”  mib2c  param2其中param1代表需要被转换的MIB库文件,param2代表希望转换该MIB库文件下的哪一个节点相关数据。下面以AERODEV-MIB.txt中的portTrunk功能节点为例来介绍整个转换过程。

2、 将编辑好的MIB库文件拷贝到linux下net-snmp安装目录中的mibs目录。在终端下cd到该目录,然后执行MIBS=”+AERODEV-MIB.txt”  mib2c  portTrunk命令即可生成portTrunk子树下的非表节点处理源码,再执行MIBS=”+AERODEV-MIB.txt”  mib2c  portTrkGroupTable即可生成portTrunk子树下的表portTrkGroupTable对应的C源码。对于非表节点按照提示输入1即可生成该功能对应的源文件portTrunk.c和portTrunk.h,对于表节点需要按照提示分别输入2,2,1,2。

3、 将生成的源码拷贝到我们的开发源码树下的user/net-snmp/agent/mibgroups/switch/private目录下。

四、      修改相应的C源文件

1、 修改portTrunk.c和portTrunk.h源文件以实现portTrkEna和trunkType两个读写节点的功能:

1)   首先介绍一下非表节点C源码中的数据定义和函数功能:oid portTrunk_variables_oid为portTrunk子树根节点的OID值。Struct variable4 portTrunk_variables[]结构体数组为portTrunk下的节点定义(包括非表节点和表节点的定义)。因为表节点我们稍后将会采用另外一种方式来处理,所以在此处我们将表节点相应的几个定义删去。其中包括TRKGRPINDEX、PORTTRUNKGROUPNUMBER、PORTTRUNKGROUPENABLE、PORTTRUNKGROUPMEMBER。

Void init_portTrunk(void)函数为初始化函数,会将相应节点的定义信息注册到agent的OID信息树里。

Unsigned char * var_portTrunk(struct variable *vp,oid *name,size_t *length, int exact, size_t *var_len, WriteMethod ** write_method); 函数为模块处理函数。Vp为请求的结构体指针,name为相应OID的指针,length为OID长度,var_len为参数长度,write_method为节点写函数指针。

该函数中switch(vp->magic)为查询需要操作的节点,对于PORTTRKENA这个读写节点来说,*write_method = write_portTrkEna为操作函数指针赋值,VAR = VALUE中的VAR为接收返回值的变量,VALUE为返回值,这两个变量需要自己定义和处理。

Var_portTrkGroupTable 函数为表portTrkGroupTable的处理函数,这里直接删去。

Int write_portTrkEna(…)为节点portTrkEna的写操作处理函数。其中RESERVE2状态中,value接收到的值即为agent收到的write request的修改值。ACTION状态中需要填入对该节点修改的具体代码,UNDO状态中需要填入对该节点恢复的具体代码。在ACTION状态中进行操作的时候,需要注意保存该节点的当前值,便于UNDO进行恢复

Int write_trunkType(…)为节点trunkType节点的写处理函数。与portTrkEna节点类似。

2)   修改后的代码可参照broadcom/uClinuxv12/user/net-snmp/agent/mibgroup/switch/private下的portTrunk.c和portTrunk.h文件。其中使用的结构体和函数均可在broadcom/uClinuxv12/user/bcmcfg下相应功能的源文件中找到。要使用user/bcmcfg下的函数和数据结构,需要将bcmcfg下的相应C文件生成的.o文件链接成.a库并在net-snmp编译参数中加入相应的头文件引用和库文件引用,目前这个步骤已经完成,具体可参照user/bcmcfg下的makefile文件。

3)   代码修改完成后,需要修改user/net-snmp/agent/mibgroup/下的default_modules.h文件,如要加入上面新修改的功能,则需要在default_modules.h文件中添加config_require(switch/private/portTrunk);

4)   以上步骤均完成后可重新编译源码树,编译完成后的snmpd即可实现对新节点操作功能。

2、 修改portTrkGroupTable.c和portTrkGroupTable.h文件以实现端口汇聚表的监控功能。

1)   数据结构和函数介绍:

Void init_portTrkGroupTable(void)为模块初始化函数,其中调用的initialize_table_portTrkGroupTable(void)为表初始化函数。

表的数据初始化工作应该在这里完成。

struct portTrkGroupTable_entry 为表的链表结构定义。其中包含了表索引定义和表内容及内容长度定义。相应的字符串数据的长度需要用户自己调整。

Struct portTrkGroupTable_entry * portTrkGroupTable_head;定义了该表的链表。整个表的操作实际上就是针对该链表的。

Struct portTrkGroupTable_entry * portTrkGroupTable_createEntry(…)为表的行创建函数。其中具体的传入参数和数据处理需要用户自己实现。

Void portTrkGroupTable_removeEntry(…)为行删除函数。在行数确定的情况下无需使用。

Int portTrkGroupTable_handler(…)函数未表的操作函数。表中数据的读取需要在MODE_GET下实现。数据的修改需要在MODE_SET_ACTION下实现。另外MODE_SET_UNDO的处理方式同非表节点。

修改后的代码可参照broadcom/uClinuxv12/user/net-snmp/agent/mibgroup/switch/private下的portTrkGroupTable.c和portTrkGroupTable.h文件。

2)   源文件修改完成后,其他的操作同portTrunk.c。

五、      已开发的相关私有MIB功能源文件位置均在开发源码树中user/net-snmp/agent/mibgroups/switch/private目录下

user/net-snmp/agent/mibgroups/switch/dealport/目录下为不同型号的交换机的OID定义。

六、      已开发的公有MIB功能源文件均在源码树user/net-snmp/agent/mibgroups/mibII目录下。具体可参考user/net-snmp/agent/mibgroups/default_modules.h中相应的内容。

七、      RMON对应的MIB源文件均在user/net-snmp/agent/mibgroups/RMON目录下。

java snmp mib库接收_SNMP MIB 功能开发详细步骤相关推荐

  1. 关于在软件中添加扫描二维码功能的详细步骤及对应的资源。

    最近有在一款软件中添加二维码扫描功能,在网上整理了一堆资源后,把一些干货拿出来给大家分享,希望大家以后能更容易的使用这个功能. 详细步骤见这个视频连接:http://www.jikexueyuan.c ...

  2. win7怎么关闭计算机的预览,win7系统工具栏预览功能怎么关闭?win7关闭工具栏预览功能的详细步骤...

    win7操作系统自带很多酷炫的功能,比如:工具栏预览功能,但是有些用户电脑配置比较低,想提升预览时间可直接关闭win7系统工具栏预览功能,但很多用户又有些不舍,每次使用预览都需要等待很长一段时间,怎么 ...

  3. java实现微信小程序客服功能开发,后台接受用户发送消息实现关键词自动回复

    最近做了一个小程序中间用到了小程序客服功能,主要实现采集用户提问,并且针对关键词自动回复及手动回复.中间踩过很多坑,所也现在记录下来提供给大家. 准备 首先准备一个小程序,配置好域名,左边菜单栏目点击 ...

  4. 「小程序JAVA实战」小程序的举报功能开发(68)

    转自:https://idig8.com/2018/09/25/xiaochengxujavashizhanxiaochengxudeweixinapicaidancaozuo66-2/ 通过点击举报 ...

  5. multipartfile file java 怎么获取里面的属性_「小程序JAVA实战」小程序的举报功能开发(68)...

    通过点击举报按钮,跳转到举报页面完成举报操作. 后台开发 获取发布人的userId,videoId,创建者的Id controller UserController.java package com. ...

  6. java实现微信小程序客服功能开发

    第一步:先在后台接入配置URL 官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/custome ...

  7. java解决撞库的问题_Web安全开发之验证码设计不当引发的撞库问题

    感谢某电商平台安全工程师feiyu跟我一起讨论这个漏洞的修复.以往在安全测试的过程中后台经常存在验证码不失效果造成的撞库问题,甚至在一些银行或者电商的登录与查存页面同样存在这个问题,一旦造成撞库无论对 ...

  8. 一对一直播app源码实现短信验证码发送功能的详细步骤

    以前很多的一对一直播app源码,是通过用户注册时设置账号和密码进行登陆的,但是这样有非常明显的缺点,时间久了之后,很多用户会忘记账号或密码,找回的步骤也会比较繁琐.随着手机实名化的进行,越来越多的用户 ...

  9. Java实现支付宝当面付(扫码)详细步骤

    当咱们申请签约好当面付功能之后怎么用Java代码调用该支付接口呢?我只创建了三个Java类. controller  commen qrcode controller用来写调用支付接口的,commen ...

  10. 公众平台 java_微信公众平台开发详细步骤与java代码

    1.微信公众平台设置 首先在https://mp.weixin.qq.com/注册一个公众平台账号(服务号.订阅号.企业号的区别) 登录微信公众平台后台,在左侧列表中最下方,找到" 基本配置 ...

最新文章

  1. Qt pro文件下跨平台宏的使用(windows/linux 以及x86 和 arm的区分)
  2. 测试build出来的dist文件夹是否编译成功
  3. web scraper 抓取网页数据的几个常见问题
  4. JZOJ 5697. 【gdoi2018 day1】农场(farm)
  5. Jenkins系列——使用Dashboard View分类展示作业
  6. 十九. Python基础(19)--异常
  7. SpringBoot 集成 Nacos
  8. 论文浅尝 | 基于多模态关联数据嵌入的知识库补全
  9. DST(对话状态追踪)常用方法
  10. 周育如的音标口诀大全_音标记忆顺口溜(48个),快速记忆音标口诀!
  11. ios 判断打开相机权限_iOS中判断照片和相机权限
  12. 乌镇互联网大会部分嘉宾分享要点实录
  13. 阿里妈妈智能诊断工程能力建设
  14. Day 41多表查询以及pymysql相关操作 完善
  15. R3live笔记:从代码看lio线程
  16. 大趋势:科技赋能产业
  17. Hi3516开发笔记(二):Hi3516虚拟机基础环境搭建之串口调试、网络连接以及sftp文件传输
  18. 基于 C# 和 js 开发的程序员升职记 remake 版
  19. 20145203 《信息安全系统设计基础》实验三 实时系统的移植
  20. 无需软件,简单实现电脑微信双开

热门文章

  1. Windows定时开机 命令 自动开机
  2. 锐捷客户端登陆打不开网页
  3. 批量导入手机通讯录_怎么批量导出联系人通讯录,华为手机通讯录转移如何操作?...
  4. PMP通关必备——知识地图全套(附PMBOK第七版)
  5. 一个好用的用于前端的字体图标库
  6. HTML+CSS【超浪漫的表白网页代码】不会编程也能制作送给女朋友的表白网站 (1)
  7. 新创建虚拟机如何配置ip地址
  8. MP3音频文件格式(MPEG-1 audio layer 3)
  9. App Store杂谈
  10. 小程序的购物商城源码(前端+后端)