• 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 *);

  • 相关阅读:
    pandas DataFrame
    pandas Series
    numpy nan和inf
    Filder配置及使用教程
    Vmware Ubuntu18.04更换清华源
    numpy 其它常用方法
    numpy 数组的拼接
    numpy 数值的修改
    numpy 索引和切片
    class 绑定的数据对象不必内联定义在模板里
  • 原文地址:https://www.cnblogs.com/beautifullife4e/p/4760361.html
Copyright © 2020-2023  润新知