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

snmp学习笔记的更多相关文章

  1. SNMP学习笔记之SNMP TRAP简介、流程以及使用Python实现接受Trap信息

    0x00 SNMP TRAP简介 SNMP(Simple Network Management Protocol) trap是一种很有用,但是也容易让人难以理解的协议. 虽然名字叫做简单网络管理协议, ...

  2. SNMP学习笔记之SNMP 原理与实战详解

    原文地址:http://freeloda.blog.51cto.com/2033581/1306743 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法 ...

  3. SNMP学习笔记之SNMP介绍,OID及MIB库

    1.1.    SNMP概览 SNMP的基本知识介绍简单网络管理协议(SNMP-Simple Network Management Protocol)是一个与网络设备交互的简单方法.该规范是由IETF ...

  4. LwIP的SNMP学习笔记

    关于这方面的资料网上非常少,做一下笔记. 在LwIP中,在\lwip-1.4.1\src\core\snmp目录下有SNMP相关的c文件,在lwip-1.4.1\src\include\lwip目录下 ...

  5. SNMP学习笔记之SNMPv3的配置和认证以及TroubleShooting

    0x00 增加snmp v3用户 增加用户的时候,必须要停止SNMP服务. # service snmpd stop # net-snmp-config --create-snmpv3-user -r ...

  6. SNMP学习笔记之SNMP树形结构介绍

    Basic command of SNMP: GET: The GET operation is a request sent by the manager to the managed device ...

  7. SNMP学习笔记之iReasoning MIB Browser

    0x00 MIB Browser iReasoning MIB浏览器是一个强大和易于使用的工具由iReasoning SNMP API提供支持. MIB浏览器是工程师管理启用SNMP的网络设备和应用程 ...

  8. SNMP学习笔记之Python的netsnmp和pysnmp的性能对比

    0x00 概览 用python获取snmp信息有多个现成的库可以使用,其中比较常用的是netsnmp和pysnmp两个库.网上有较多的关于两个库的例子. 本文重点在于如何并发的获取snmp的数据,即同 ...

  9. SNMP学习笔记之SNMP的安装及Python的调用

    0x00 概述 本文是介绍SNMP在Windows和Linux(Ubuntu)下的安装,以及通过Python调用其接口的文章. 0x01 开发环境 Python 3.5.1 Windows 10 64 ...

随机推荐

  1. iOS之中途修改类名

    中途修改类名 在开发过程中,可能感觉之前设置的类名不够代表性,或者发现名字拼写错误等等诸如此类的原因,需要修改类名,不懂技巧的话简直不敢改,现在这里就记录下该类名的方法. 具体步骤如下: .h文件里选 ...

  2. 第一次使用UML的感觉

    刚开始接触的时候,其实我内心是拒绝的,因为感觉这种软件之前接触过,觉得就是相当于思维导图那种的. 可当自己使用的时候,觉得大纲总体上是类似是规划方向的,可是细节却让人深思,用什么图标,特别是用什么线, ...

  3. HTTrack 网站备份工具

    HTTrack可以克隆指定网站-把整个网站下载到本地.可以用在离线浏览上,免费的噢! 强大的Httrack类似于搜索引擎的爬虫,也可以用来收集信息.记得之前写过篇http://www.cnblogs. ...

  4. linux进程通信

    e14: 进程间通信(进程之间发送/接收字符串/结构体): 传统的通信方式: 管道(有名管道 fifo,无名管道 pipe) 信号 signal System V(基于IPC的对象):         ...

  5. Redis集群搭建1

    wget .168.0.201:6379 192.168.0.201:6380 192.168.0.201:6381 192.168.0.202:16379 192.168.0.202:16380 1 ...

  6. java中被各种XXUtil/XXUtils辅助类恶心到了,推荐这种命名方法

    且看一下有多少个StringUtils 列举一下XXUtil/XXUtils恶劣之处 1. 不知道该用XXUtil还是用XXUtils, 或者XXHelper, XXTool 2. 不知道该用a.ja ...

  7. 一些VS2013的使用技巧

    作者:h46incon的Blog 1. Peek View 可以在不新建TAB的情况下快速查看.编辑一个函数的代码. 用法:在光标移至某个函数下,按下alt+F12. 然后在Peek窗口里可以继续按a ...

  8. 好用的绿色工具(mss2sql,jd-gui)

    1.sql server导入mysql 神器(速度不是一般的快) mss2sql.exe 2.java 反序列化工具 jd-gui.exe

  9. C#区分多态和重载-delphi也类似

    Delphi也是基于继承和接口的多态性.

  10. iOS 使点击事件穿透透明的UIView

    如图: 悬浮的三个按钮下方有一个可以点击的灰色区域,但是点击按钮之间的透明区域, 这三个按钮的contentView会响应这个点击事件,这时候需要让这个contentView不响应这个点击事件. 解决 ...