zoukankan      html  css  js  c++  java
  • snmp学习笔记

    snmp5.5 client

    包含头文件

    #include <net-snmp/net-snmp-config.h>

    #include <net-snmp/net-snmp-includes.h>

    用到的函数有:
    初始化snmp库:
    void init_snmp(const char *);                   用于初始化snmp库

    netsnmp_session *snmp_open(netsnmp_session *);  打开socket并绑定响应的udp端口,如果返回空,则设置snmp_errno为错误代码

    int snmp_close(netsnmp_session *);              关闭输入的session,释放session中申请的内存,抛弃所有未处理的请求,关闭所有socket,返回值为1是表示成功,否则返回0
    int snmp_close_sessions(void);                  关闭所有打开的session

    关于pdu的操作:
    netsnmp_pdu    *snmp_pdu_create(int type);     根据type创建snmp的pdu,一下为type可选值

    netsnmp_pdu *snmp_clone_pdu(netsnmp_pdu *pdu); 克隆一份pdu

    netsnmp_pdu *snmp_fix_pdu(netsnmp_pdu *pdu, int idx);修复一个接收到的pdu,idx使用创建pdu时的type,修复后需要释放响应pdu

    void snmp_free_pdu(netsnmp_pdu *pdu);  释放pdu

    设置pdu中值的操作:

    netsnmp_variable_list *snmp_pdu_add_variable(netsnmp_pdu *pdu,   const oid * name, size_t name_length, u_char type, const void * value, size_t len); 向pdu中添加一个oid和这个oid的值

    netsnmp_variable_list *snmp_varlist_add_variable(netsnmp_variable_list ** varlist, const oid * name, size_t name_length, u_char type,   const void * value, size_t len);    向netsnmp_variable_list中添加一个oid和这个oid的值

    netsnmp_variable_list *snmp_add_null_var(netsnmp_pdu *pdu, const oid * name, size_t name_length);   向pdu中添加一个没有值的oid

    netsnmp_variable_list *snmp_clone_varbind(netsnmp_variable_list * varlist);克隆结构体

    接收和发送snmp的pud有两种方式:同步和异步。同步方式如下:

    int snmp_synch_response(netsnmp_session *, netsnmp_pdu *,netsnmp_pdu **);同步发送请求和接收相应。

    异步方式如下:请参考http://www.net-snmp.org/wiki/index.php/TUT:Simple_Async_Application
    异步和同步不同之处在于:
    /* 异步session中需要设置callback */
    session.callback = asynch_response;            /* default callback */
    session.callback_magic = hs;

    其他辅助函数:

    /* Output */

    void print_variable(const oid * objid, size_t objidlen,const netsnmp_variable_list * variable);

    void fprint_variable(FILE * fp,const oid * objid, size_t objidlen, const netsnmp_variable_list * variable);

    int snprint_variable(char *buf, size_t buf_len,const oid * objid, size_t objidlen, const netsnmp_variable_list * variable);

    void print_value(const oid * objid, size_t objidlen,  const netsnmp_variable_list * variable);

    void fprint_value(FILE * fp,const oid * objid, size_t objidlen, const netsnmp_variable_list * variable);

    int snprint_value(char *buf, size_t buf_len,const oid * objid, size_t objidlen, const netsnmp_variable_list * variable);

    /* Searching the MIB Tree */
    oid *snmp_parse_oid(const char *, oid *, size_t *);
    int read_objid(const char *, oid *, size_t *);
    int get_module_node(const char *, const char *, oid *, size_t *);

  • 相关阅读:
    弹性计算双周刊 第24期
    【阿里云新品发布·周刊】第8期:数字化风暴已经来临!云+区块链,如何颠覆未来科技?
    洞见数据库前沿 阿里云数据库最强阵容 DTCC 2019 八大亮点抢先看
    开发者招聘节 | 2019阿里巴巴技术面试题分享(陆续放出)
    bzoj1856: [Scoi2010]字符串
    bzoj1257: [CQOI2007]余数之和sum
    bzoj1088: [SCOI2005]扫雷Mine
    noip2015 运输计划
    noip2015 子串
    noip2015 斗地主
  • 原文地址:https://www.cnblogs.com/beautifullife4e/p/4760361.html
Copyright © 2011-2022 走看看