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 *);
snmp学习笔记的更多相关文章
- SNMP学习笔记之SNMP TRAP简介、流程以及使用Python实现接受Trap信息
0x00 SNMP TRAP简介 SNMP(Simple Network Management Protocol) trap是一种很有用,但是也容易让人难以理解的协议. 虽然名字叫做简单网络管理协议, ...
- SNMP学习笔记之SNMP 原理与实战详解
原文地址:http://freeloda.blog.51cto.com/2033581/1306743 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法 ...
- SNMP学习笔记之SNMP介绍,OID及MIB库
1.1. SNMP概览 SNMP的基本知识介绍简单网络管理协议(SNMP-Simple Network Management Protocol)是一个与网络设备交互的简单方法.该规范是由IETF ...
- LwIP的SNMP学习笔记
关于这方面的资料网上非常少,做一下笔记. 在LwIP中,在\lwip-1.4.1\src\core\snmp目录下有SNMP相关的c文件,在lwip-1.4.1\src\include\lwip目录下 ...
- SNMP学习笔记之SNMPv3的配置和认证以及TroubleShooting
0x00 增加snmp v3用户 增加用户的时候,必须要停止SNMP服务. # service snmpd stop # net-snmp-config --create-snmpv3-user -r ...
- SNMP学习笔记之SNMP树形结构介绍
Basic command of SNMP: GET: The GET operation is a request sent by the manager to the managed device ...
- SNMP学习笔记之iReasoning MIB Browser
0x00 MIB Browser iReasoning MIB浏览器是一个强大和易于使用的工具由iReasoning SNMP API提供支持. MIB浏览器是工程师管理启用SNMP的网络设备和应用程 ...
- SNMP学习笔记之Python的netsnmp和pysnmp的性能对比
0x00 概览 用python获取snmp信息有多个现成的库可以使用,其中比较常用的是netsnmp和pysnmp两个库.网上有较多的关于两个库的例子. 本文重点在于如何并发的获取snmp的数据,即同 ...
- SNMP学习笔记之SNMP的安装及Python的调用
0x00 概述 本文是介绍SNMP在Windows和Linux(Ubuntu)下的安装,以及通过Python调用其接口的文章. 0x01 开发环境 Python 3.5.1 Windows 10 64 ...
随机推荐
- iOS之中途修改类名
中途修改类名 在开发过程中,可能感觉之前设置的类名不够代表性,或者发现名字拼写错误等等诸如此类的原因,需要修改类名,不懂技巧的话简直不敢改,现在这里就记录下该类名的方法. 具体步骤如下: .h文件里选 ...
- 第一次使用UML的感觉
刚开始接触的时候,其实我内心是拒绝的,因为感觉这种软件之前接触过,觉得就是相当于思维导图那种的. 可当自己使用的时候,觉得大纲总体上是类似是规划方向的,可是细节却让人深思,用什么图标,特别是用什么线, ...
- HTTrack 网站备份工具
HTTrack可以克隆指定网站-把整个网站下载到本地.可以用在离线浏览上,免费的噢! 强大的Httrack类似于搜索引擎的爬虫,也可以用来收集信息.记得之前写过篇http://www.cnblogs. ...
- linux进程通信
e14: 进程间通信(进程之间发送/接收字符串/结构体): 传统的通信方式: 管道(有名管道 fifo,无名管道 pipe) 信号 signal System V(基于IPC的对象): ...
- 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 ...
- java中被各种XXUtil/XXUtils辅助类恶心到了,推荐这种命名方法
且看一下有多少个StringUtils 列举一下XXUtil/XXUtils恶劣之处 1. 不知道该用XXUtil还是用XXUtils, 或者XXHelper, XXTool 2. 不知道该用a.ja ...
- 一些VS2013的使用技巧
作者:h46incon的Blog 1. Peek View 可以在不新建TAB的情况下快速查看.编辑一个函数的代码. 用法:在光标移至某个函数下,按下alt+F12. 然后在Peek窗口里可以继续按a ...
- 好用的绿色工具(mss2sql,jd-gui)
1.sql server导入mysql 神器(速度不是一般的快) mss2sql.exe 2.java 反序列化工具 jd-gui.exe
- C#区分多态和重载-delphi也类似
Delphi也是基于继承和接口的多态性.
- iOS 使点击事件穿透透明的UIView
如图: 悬浮的三个按钮下方有一个可以点击的灰色区域,但是点击按钮之间的透明区域, 这三个按钮的contentView会响应这个点击事件,这时候需要让这个contentView不响应这个点击事件. 解决 ...