windows 解析 MIB 文件并从中提取陷阱相关信息的 net-snmp 示例代码

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/7330168/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-15 18:01:15  来源:igfitidea点击:

net-snmp sample code to parse MIB file and extract trap related information from it

c++windowssnmpmibsnmp-trap

提问by Rahul

I am using the net-snmp C library on Windows. I want to parse trap-related information from the MIB files.

我在 Windows 上使用 net-snmp C 库。我想从 MIB 文件中解析与陷阱相关的信息。

I need some sample code to do this. I didn't find anything useful on http://www.net-snmp.org/

我需要一些示例代码来做到这一点。我在http://www.net-snmp.org/上没有找到任何有用的东西

回答by Rahul

Here is some sample code to parse MIB files using the net-snmp library. Before you use this code you need to refer or add the Include and Lib directories of net-snmp in your project properties:

下面是一些使用 net-snmp 库解析 MIB 文件的示例代码。在使用此代码之前,您需要在项目属性中引用或添加 net-snmp 的 Include 和 Lib 目录:

#include "stdafx.h"
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/definitions.h>
#include <net-snmp/library/tools.h>
#include <net-snmp/mib_api.h>
#include <net-snmp/library/mib.h>
#include <net-snmp/library/parse.h>

int _tmain(int argc, _TCHAR* argv[])
{
    struct tree *tp;
    struct tree *tree_head = NULL ;
    FILE *fp = NULL;

    char str[] = "c:\MyMIBFileDir\My.mib";

    netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_MIB_WARNINGS , 2);
    netsnmp_ds_toggle_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_SAVE_MIB_DESCRS);

    netsnmp_init_mib();

    add_mibdir("c:\MyMIBFileDir\");

    tree_head = read_mib(str);

    if ( tree_head )
    {
        //Successfully parsed the MIB
    }

    // Full traversal of the subtree
    for (tp = tree_head; tp; tp = tp->next_peer)
        // Here you can do custom parsing

    fclose(fp);

    return 0;
}