SNMP(三)使用mib2c.mfd.conf生成的模版及代码中需注意的地方

Net-SNMP命令行工具实战:snmpget、snmpwalk与snmpset深度解析 SNMP(简单网络管理协议)是网络设备监控的底层通信标准,其核心在于OID(对象标识符)寻址、UDP协议交互与MIB(管理信息库)建模。理解SNMP工作原理,关键在于掌握协议版本差异(v2c明文社区串 vs v3用户级安全模型)、访问控制机制(rocommunity/rwcommunity配置)及PDU操作类型(GET/GETNEXT/GETBULK)。Net-SNMP工具链如snmpget、snmpwalk和snmpset并非过时命令,而是提供裸金属级可见性的诊断基础设施——它们直连设备寄存器映射,绕过G 阅读详情

mfd用于生成table的模版,使用此工具链生成将各个功能模块分割开来了。

scalars可以使用mib2c.scalar.conf,trap可以使用mib2c.notify.conf来生成模版。

记录如下,默认使用default即可,其中MyMIB为自行定义的XXX名称:

XXX  DEFINITIONS::=BEGIN
....
....

ExampleTable为自行定义的table:

ExampleTable        OBJECT-TYPE
           SYNTAX SEQUENCE OF ExampleEntry
.....
.....

以下为输出和select信息:

[root@localhost snmp]# mib2c mib2c.mfd.conf MyMIB::ExampleTable
Replacing previous mibNode mib2c.mfd.conf with MyMIB::ExampleTable
writing to -
mib2c has multiple configuration files depending on the type of
code you need to write.  You must pick one depending on your need.

You requested mib2c to be run on the following part of the MIB tree:
  OID:                       	    ExampleTable
  numeric translation:       	    .1.3.6.1.4.1.310.3
  number of scalars within:         0
  number of tables within:          1
  number of notifications within:   0

First, do you want to generate code that is compatible with the
ucd-snmp 4.X line of code, or code for the newer Net-SNMP 5.X code
base (which provides a much greater choice of APIs to pick from):

  1) ucd-snmp style code
  2) Net-SNMP style code

Select your choice : 2

**********************************************************************
		     GENERATING CODE FOR TABLES:
**********************************************************************

  The Net-SNMP agent API is extremely extensive and, in fact, lets
  each programmer write agent code according to the style that works
  best for them based on their experience and their preference.  We're
  going to ask you a serious of questions that will help mib2c
  generate code that best suits *your* needs, as the programmer that
  will be responsible for taking the code and further refining it.  If
  you don't like how the results look, you are always welcome to
  re-run mib2c and select a different set of options.

    There are essentially two tasks involved in processing requests
  for OIDs within a MIB table - firstly identifying the relevant row
  of the table for a given request, and then returning (or updating)
  the appropriate column value within that row.  Many MIB tables model
  the state of some external system (the kernel, a device, processes,
  etc), and the MIB implementation module (the code we're about to
  produce a template for) acts as an interface between this underlying
  system and the SNMP side.  Other tables hold data internally that is
  only available within the agent itself, or at least the master copy
  of the data is held within the agent.

    There are a number of different code templates that can be used to
  implement MIB tables, using various approaches to these two tasks.

  There are three basic approaches to identifying the relevant row:

    1) Pass the request through to the table-specific code, and
       identify the requested row there (for both GET and GETNEXT
       requests).  This is typically the most efficient way to get
       up-to-date information, but relies on suitable
       (programmer-provided) code within the MIB handler.
       Most importantly, you should be an expert to use this choice.

       This will produce code based on the table_dataset handler.

    2) Have table-specific code to provide information about which
       rows exist in the table (by iterating through them in turn),
       but utilise standard helper code to select the appropriate
       row for a given request.  This is particularly suitable for
       tables where the data is naturally stored in a "random" order
       (or differently to the MIB table index), or where rows are
       frequently added to or removed from the table.

         However searching for the requested row is not very efficient,
       and performance can be slow - particularly for large tables with
       many rows.

    3) Hold a locally cached copy of the contents of the table (or at
       least a cache of which rows are valid), and utilise standard
       helper code to select the appropriate row.  This is
       significantly faster than the iterator-based approach, but
       cached data is inevitably slightly "stale" with respect to the
       data from the underlying system being managed.  This approach,
       since it relies on caching of data, is also results in a larger
       memory footprint.  It is less appropriate for tables where rows
       are frequently added or removed externally to the agent (i.e.,
       not via SNMP requests).

       This approach can also be used where _all_ use of the table is
       via SNMP, and there is no external "underlying system".  In
       this case, the local cache is the canonical version of the
       table.

    4) Do not generate code for the tables.

Select the option that best fits your requirements: 3


  Having identified the appropriate row for a given request, there are
  three basic styles of code for returning (or updating) the requested
  column value from within this row:

    1) A single handler routine, which contains all the code needed to
       handle GET and SET requests for each of the column objects.


    2) A set of individual routines, each of which is concerned
       with a particular aspect of processing the request.
       There is one routine for reporting values for GET requests,
       and one routine for each stage of processing a SET request.

    3) A (different) set of individual routines, each of which is
       smaller and more tightly focused than the code generated by
       style 2.  The aim here is to reduce the amount of SNMP specific
       knowledge required to implement a module, and hide much of the
       SNMP terminology and processing within standard generated code
       (which can simply be used sight unseen).

       This will produce code based on the 'mfd' hepler ('MIB for Dummies').

    4) Do not generate code for the tables.

   (In all cases, GETNEXT requests are automatically converted
    into the equivalent GET request, so the MIB specific code
    need only be concerned with GET and SET requests.).
       
Select the code style you wish to use: 3



     The same template code can be generated using
                 mib2c -c mib2c.mfd.conf ExampleTable
Defaults for ExampleTable...
There are no defaults for ExampleTable. Would you like to

  1) Accept hard-coded defaults
  2) Set defaults now [DEFAULT]

Select your choice : 2


This table has writable columns. Do you want to generate
code for writeable columns, or restrict the table to read-only?

  1) generate code with writeable columns [DEFAULT]
  2) generate code with read-only columns

Select your choice : 1


Since your table is writable, do you want to generate code to save and
restore rows in the Net-SNMP persistent store? You should only use this
option if the agent 'owns' the data, and doesn't get the data from an
external source.

  1) do not generate persistent store code [DEFAULT]
  2) generate persistent store code

Select your choice : 1


Writable tables sometimes have dependencies beteen columns
or with other tables. If there are no dependencies in this table, you
probably do not want the extra code.

  1) do not generate dependency code [DEFAULT]
  2) generate dependency code

Select your choice : 1


Do you want to use an existing data structure for the USER context?
This would be a structure used to track data for the entire table,
(similar to a global variable) not individual rows.  (Many
implementations won't need this, in which case the default is fine).


  1) No, use netsnmp_data_list [DEFAULT]
  2) Yes, use my own structure

Select your choice : 1


Do you want to use an existing data structure for the DATA context?
The DATA context holds the data for each MIB column in a given row. By
default, a new data structure will be created with an element for each
column.  If you already have a structure that holds your data, select 2.

  1) No, use generated [DEFAULT]
  2) Yes, use my own structure

Select your choice : 1


Do you need to initialize elements in the 'generated' DATA
context when a new instance is created (eg default values, or other structures
you are going to add that might need initialization to the row request context?
(The most common reasons you might need to do this is are if you want to keep
some non-MIB data for every row, or some columns have default values.)

  1) no, no initialization needed
  2) yes, initilization is needed [DEFAULT]

Select your choice : 2


Do you plan on keeping all data in the format defined by the MIB? If so,
no functions will be generated to map values. If some data will be
stored in a different format, the mapping functions will be generated.
If your MIB has integers with enumerations, mapping functions are more
likely to be needed. (e.g. A TruthValue object will hold the value
1 or 2, but a C boolean would be 1 or 0.)

  1) All values will be stored as defined by the MIB [DEFAULT]
  2) I need to map values to the format defined by the MIB.

Select your choice : 1


Which method would you like to use to gather data about available rows? 

  1) container : [DEFAULT]  This access method uses a netsnmp_container
     to store all row data in memory. This method is best for:
         - Internal data (maintained by the agent)
         - Access speed is important
         - Sufficient memory exists to contain all rows

  2) container-cached : This access method uses a netsnmp_container
     to keep track of the indexes (and data, usually) for each 
     row. This method is best for:
         - External data (maintained by another process/the kernel)
         - Access speed is important
         - Sufficient memory exists to contain all indexes
     
  3) unsorted-external : This access method iterates over all of your data
     to find the row with the appropriate index. This method is good for
         - External data (maintained by another process/the kernel)
         - Using less memory is much more important than access speed
     
Select your choice : 1


When accessing your data, is your data TRANSIENT?

  1) Yes. My data is TRANSIENT (e.g. a pointer to a static buffer that
     my be overwritten during a request) and needs to be copied during
     processing.

  2) Yes. My data is SEMI-TRANSIENT (e.g. an allocated pointer to a
     copy of the data).

  3) No, my data is PERSISTENT (e.g. an allocated pointer to the actual
     data, which is under the agent's control)
  
Select your choice [DEFAULT=1] : 1


Do you want example code to be generated? This will generate example code
for reading data from a text file.

  1) generate example code [DEFAULT]
  2) do not generate example code

Select your choice : 1

Is your table sparse? A sparse table is a table where some
columns might not exist for all rows. Note that if your table
contains a RowStaus column and it supports createAndWait, you
will need sparse table support.

  1) No, all columns always exist for every row [DEFAULT]
  2) Yes, my table is sparse

Select your choice : 1

Do you want a makefile and AgentX subagent source file generated?
This will let you test your table without having to link it into
snmpd. (You can still link it in later.)

  1) do not generate makefile/AgentX code [DEFAULT]
  2) generate makefile/AgentX code

Select your choice : 1

writing to defaults/table-ExampleTable.m2d
Starting MFD code generation...
writing to ExampleTable.h
| +-> Processing table ExampleTable
writing to defaults/node-UserStatus.m2d
writing to defaults/node-CheckTime.m2d
writing to defaults/node-MonSet.m2d
writing to defaults/node-UserIndex.m2d
writing to ExampleTable.c
writing to ExampleTable_data_get.h
writing to ExampleTable_data_get.c
| |   +-> Processing nonindex UserStatus
| |   +-> Processing nonindex CheckTime
| |   +-> Processing nonindex MonSet
writing to ExampleTable_data_set.h
writing to ExampleTable_data_set.c
Use of uninitialized value $key in hash element at /usr/local/lib/perl5/SNMP.pm line 1387, <GEN109> line 408.
Use of uninitialized value $key in hash element at /usr/local/lib/perl5/SNMP.pm line 1388, <GEN109> line 408.
Use of uninitialized value in null operation at /usr/local/lib/perl5/SNMP.pm line 1387, <GEN109> line 408.
| |   +-> Processing nonindex MonSet
writing to ExampleTable_oids.h
writing to ExampleTable_enums.h
writing to ExampleTable_interface.h
writing to ExampleTable_interface.c
writing to ExampleTable_data_access.h
writing to ExampleTable_data_access.c
writing to ExampleTable-README-FIRST.txt
writing to ExampleTable-README-ExampleTable.txt


**********************************************************************
* NOTE WELL: The code generated by mib2c is only a template.  *YOU*  *
* must fill in the code before it'll work most of the time.  In many *
* cases, spots that MUST be edited within the files are marked with  *
* /* XXX */ or /* TODO */ comments.                                  *
**********************************************************************
running indent on ExampleTable.h
running indent on ExampleTable_interface.c
running indent on ExampleTable_data_set.c
running indent on ExampleTable_interface.h
running indent on ExampleTable.c
running indent on ExampleTable_enums.h
running indent on ExampleTable_data_access.c
running indent on ExampleTable_data_get.h
running indent on ExampleTable_data_set.h
running indent on ExampleTable_oids.h
running indent on ExampleTable_data_get.c
running indent on ExampleTable_data_access.h

这里其实是使用默认的配置选项即可(选项中标有default)。

NetSNMP subagent development manual

net-snmp agent开发及mib2c MFD

这两篇文章也可以参考。

END:然后根据需求再在这基础上修改添加代码,主要需要修改的是xxxTable_data_access.c 、xxxTable_get.c、xxxTable_set.c,以及对应的.h文件。

 

Note:这里还需注意的是xxx_CACHE_TIMEOUT 该宏定义,需根据实际需要修改此宏。避免时间过长,或者太短,数据未缓存。另外,关于性能优化,可在Load添加索引即可,把获取数据移到interface.c内,可提升执行性能。

 

如果在编译过程中遇见

ERROR: unknown node.decl: in_addr_t

exiting at conf file

请参考:https://sourceforge.net/p/net-snmp/mailman/message/28788947/

这里还需注意的是,生成后,可能没有包含data_cache,需在default下修改table_xxxx的配置文件再重新生成:

这2项分别改为1,0。

 

此外:

根据你的节点属性,生成的代码中有需要修改的地方:

如节点属性为RW,在xxx_interface中:

这里需要将!去掉,允许写入。

如有可创建的属性:

这里需改成0.

 

 

此外还有代码存在的BUG,批量删除可能存在问题,需修改:

    if (rowreq_ctx && (rowreq_ctx->rowreq_flags & MFD_ROW_DELETED))
       xxxxxTable_release_rowreq_ctx(rowreq_ctx);
    if (rowreq_ctx && (rowreq_ctx->rowreq_flags & MFD_ROW_DELETED))
    {
		if(CONTAINER_FIND( xxxxxTable_if_ctx.container,
				 rowreq_ctx))
		{
			CONTAINER_REMOVE( xxxxxTable_if_ctx.container,
					 rowreq_ctx);
		}        
        xxxxxTable_release_rowreq_ctx(rowreq_ctx);
    }

关于缓存:

在interface.c 里xxx__get_values函数,有可能get的数据量比较大,需在此处添加更新缓存时间戳,如下代码:

......
netsnmp_assert(NULL != rowreq_ctx);
netsnmp_set_monotonic_marker(&(xxxTable_if_ctx.cache->timestampM));//添加此行代码
......

 

unity制作交互视频/互动视频 unity制作交互视频/互动视频 思路 1.先让unity播放视频 2. 视频播放结束后,视频暂停,按钮出现 3.按钮跳转下一个视频 视频播放 先创建UI-Raw Iamge 在Raw Iamge 挂载组件 Video Player 接着挂载视频播放的脚本 using UnityEngine; using UnityEngine.UI; using UnityEngine.Video; publi... 阅读详情

相关推荐

寻迹Arduino智能小车

Arduino巡线寻迹智能小车

Rachael_Wang的博客 1万+

自己创建mib2c.XXX.conf文件

今天在自己创建mib2c.xxx.conf文件的时候遇到了一些问题,所以把它记录下来。 首先我想像执行mib2c -c mib2c.mfd.conf xxxTable命令一样可以生成mib file中所有和Table有关的节点, 所以我在snmp的文件夹下创建了一个mib2c.xxx.conf的文件(在做这件事之前要确保你有一定的perl语言基础) 然后在mib2c.conf直接run我们刚

liukunbinzhaoshuyan的专栏 2106

Ubuntu安装pytorch3d的最便捷方法【原创】

Ubuntu安装pytorch3d的最便捷方法

qq_54900679的博客 2924

snmp mib2c 模板使用

近段时间一直在研究mib2c的使用问题,网上的资料不是很多,也介绍的不全面,希望这篇文章能帮助初学者。 对于使用mib2c有很多选择,比如:mib2c.mfd.conf    mib2c.iterate.conf   mib2c.scalar.conf   等模板文件,前两者主要是针对table的,后者是针对scalar,对于我接触的人大部分都用的是iterate和scalar,但是我还是比较

liukunbinzhaoshuyan的专栏 9732

(南京观海微电子)——GH700X调试指南--SPI 接口+LVDS-测试盒使用方法

1表示OTP完成后,读取烧录值是否一致来判断是否烧录成功,2表示同时检测VCOM是否一致以及烧录次数是否增加,3表示不做任何检测,由用于自行在程序中判断。[格式]:SetFindVcomEn (<开启或关闭>),ON表示开启VCOM搜寻,默认是开启的,只要使能OTP烧录,按OTP按键则进行VCOM查询;[功能]:OTP完成检测类别,用于设置OTP完成后检测OTP次数还是OTP值来判断OTP是否成功。[功能]:用于设置VCOM查询使能,比如需要烧全代码而不需要对VCOM查询时,可以禁止VCOM查询。

m0_75095200的博客 1666

Telegram Bot Api使用教程

其中token为你的机器人token,method为telegram给定的方法,在获取群组chat_id那一步就使用了telegram的其中一个方法(getUpdates),其他方法后面会介绍。telegram发送消息的方式类似与钉钉机器人,都是向一个api发送http请求,而且对于同一个APItelegram支持GET和POST两种请求方式.请求的api格式如下。通常来说我们都需要让机器人在一个群组里工作,所以首先我们需要将机器人添加到我们指定的群组,在群组里发送随意消息并@这个机器人,比如...

豫迷糊的码上生活 1万+

net-snmp开发教程

目录 1.................................................................................................................基本概念...3 1.1snmp协议...3 1.2MIBS.3 1.2.1s...

weixin_30249203的博客 1080

sentinel滑动时间窗口算法学习

滑动时间窗口 先不说sentinel的算法实现,先说什么是滑动时间窗口, 我们在进行限流的时候,比如通过QPS进行限流,那假如我们以秒为单位,举个例子: 我设置了限流规则,qps是10 如果不使用滑动窗口算法,在统计qps的时候,就有可能会有问题,比如: 在0 - 500ms中的请求数是0,但是在500ms - 1000 ms的请求数是10;在1000ms - 1500ms 之间又进来了5个请求,此时只判断了1000ms - 2000 ms之间的请求数 因为没有把1S进行拆分多个窗口,所以在1000ms之后

小小少年的博客 3980

net-snmp移植项目总结

1、       项目移植总结 1.1  交叉编译的configure参数的配置 交叉编译参数的设置,这个部分是最基本的,如果参数设置的有问题,snmpd运行起来就会有问题。 在x86环境下进行测试的时候,选用一个简单的编译参数,可以工作: LDFLAGS="-L/home/zmj/work/LNOS/mc218/lib/x86"LIBS="-lsqlite3 -lmc218 -lpthr

bluemickey的专栏 3138

极空间NAS零基础部署Wiki.js:Docker+PostgreSQL全流程避坑指南

本文提供了一份在极空间NAS上从零部署Wiki.js私有知识库的详细指南。通过Docker容器化技术,结合PostgreSQL数据库,手把手讲解环境准备、核心组件配置、性能优化及安全加固等全流程,并特别针对极空间平台特性提供了避坑要点,帮助用户打造安全、高效、自主可控的知识管理系统。

3a9bq4r8t2y的博客 486

【GameFramework框架内置模块】6、实体(Entity)

实体Entity就是一个实体的基本单元,类似于Unity的GameObject对象本体,然后这个本体上面附加其他各种各样组件,才能实现各种各样的功能。一般需要在游戏运行时动态加载的游戏对象,比如怪物、武器、子弹、特效,都需要给这个物体挂载一个实体Entity,这样的话就可以方便的对实例出来的对象进行管理。下面就来看一下如何使用吧。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 3137

【snmp】net-snmp添加自定义MIB(标量和表格)

安装net-snmp见:【snmp】centos6.5安装和配置snmp5.7.1 net-snmp添加自定义MIB(标量):【snmp】net-snmp添加自定义MIB(标量) net-snmp添加自定义MIB(表格)见:【snmp】net-snmp添加自定义MIB(表格) 一、编写MIB文件 -- -- MyTest-MIB.my -- MIB generated by MG-SOFT Visual MIB Builder Version 6.0 Build 88 -- ...

njlite的博客 2466

2019年高教社杯全国大学生数学建模竞赛 C 题:《机场的出租车问题》真题解析与 MATLAB 解决方案

🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。

**My Coding Family** 3453

mib2c 配置

<br />mib2c 配置 Net-SNMP的mib2c 收藏今天在搞net-snmp所提供的mib2c tool,<br />用起來說實在的實在有點難用。<br />大概是我對它還不太熟的關係吧。<br />以下是今天弄的一些心得:<br />(因為開發需求,所以設定prefix為/opt/net-snmp。)<br /><br />1.<br />首先,在安裝net-snmp時,需在configure時加入以下參數<br />$ ./configure --prefix=/opt/net-snmp/

windforcezw的专栏 833

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

MIB2C模版

snmp mib2c 模板使用 http://blog.csdn.net/liukunbinzhaoshuyan/article/details/7382016 近段时间一直在研究mib2c的使用问题,网上的资料不是很多,也介绍的不全面,希望这篇文章能帮助初学者。 对于使用mib2c有很多选择,比如:mib2c.mfd.conf   mib2c.iterate.conf   mib2c.

killerover84的专栏-----天下 1241

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

使用mib2c.iterate.conf生成Table代码

NetSnmp初步(一):让我们的程序提供snmp服务 录制程序要提供远程控制功能,大概需求为: (1)可以查询程序当前的运行状态:录制了多少路节目,每路节目的状态,数据码率 等等; (2)可以远程控制节目的起停,也就是发一个命令,就可以停掉某一路节目; (3)异常情况,主动上报。  上头决定使用snmp来实现。这几天研究了一下,做点笔记。    闲话休叙,开工干活:

rheostat的专栏 6987

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

mib2c配置

Net-SNMP的mib2c 收藏 今天在搞net-snmp所提供的mib2c tool, 用起來說實在的實在有點難用。 大概是我對它還不太熟的關係吧。 以下是今天弄的一些心得: (因為開發需求,所以設定prefix為/opt/net-snmp。) 1. 首先,在安裝net-snmp時,需在configure時加入以下參數 $ ./configure --prefix=/o

rheostat的专栏 1500

net-snmp学习-自定义mib库

扩展 agent 到这里你已经应该正确的写出了一个私有的MIB文件,你需要把它放置到系统的MIB文件库中。我的系统的MIB库路径是/usr/share/snmp/mibs/。 然后开始学习使用MIB2C这个强大的工具,它的作用是把你写好的一个MIB文件,转化成一个或多个在net-snmp下可以使用的.c/.h文件。 一个简单的例子:当你写成了一个叫做ucdDemoPublic的私有MIB文件

bluemickey的专栏 2883

mib2c用途和用法

1.用途 用于批量注册OID,产生批量的OID注册代码模板。 2.用法 三个文件: - MIB definition file ---基于该mib文件产生输出文件 - C header file--生成的模板代码头文件 - C implementation file.---生成的模板代码源文件 命令: mib2c -c mib2c.int_watch.conf nstMIBObje

1703

学习snmp的体会(推荐一看,涵盖了初学者会犯的大部分错误)

1. 获取net-snmp开发包 可以用开源上http://www.net-snmp.org/download.html获取自己所需要的各种版本。 2. 分析需求,进行合理配置与编译安装 比如要不要将其编译成动态库,还是静态库;要不要某些库;等等。可以通过在其目录下执行./configure --help即可知道她有配置的选项。比如“—host=xxx”配置她将在什么样的环境下运行,“—bu

嵌入式世界的专栏 3742

mib2c 配置 文件

NET-SNMP中mib2c配置文件选择小结 本文档的Copyleft归popy所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。gtalk: mypopy at gmail.com来源:barrypopy.cublog.cnNET-SNMP开发agent实在算不上方便,光是各种工具...

weixin_33881041的博客 530

net-snmp开发简介

1、安装 ./configure make make install 2、配置参数/文件 只有适当的配置snmpd.conf文件,snmpd才能运行起来。 位置: 可以在./configure的时候指定配置文件所在的位置,也可以用--with-persistent-directory="path"的命令行指定配置文件所在的位置。 文件的配置: ...

mxdxm8899的专栏 285

net-snmp开发代理常见问题解决方案

snmpd启动方式: ./snmpd -Lsd -Lf /dev/null -p /var/run/snmpd.pid -a -c /etc/snmp/snmpd.conf -DTest    snmp获取MIB-II树内容 snmpbulkwalk -v 2c 127.0.0.1 -c public .1.3.6.1.2.1.1   snmp获取Test内容 snmpbulkwal

云端的蜗牛 2969

mib2c问题解决(转)

By: Bian Jiang (borderj@gmail.com) From: http://www.b0rder.com Date: 2008.11.11 1.mib 库文件 BVCOM-SYSTEMUP...

cuj2489的博客 766
上一篇: NET-SNMP学习(二)Table
下一篇: WireShark抓取OMCI报文解析
just_run丶
博客等级 码龄10年 51粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

just_run丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值