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 ...
随机推荐
- Linux定时任务
定时任务:1.目录/var/spool/cron2:查看当前用户的定时任务[oracle@localhost ~]$ crontab -l* * * * * /home/oracle/test.sh ...
- javase-->基础知识(三)
1.方法 普通方法:4个必要,1个可选 1):必须有返回值类型,没有返回值用void表示 2):必须有名字 3):必须有()和形参 4):必须有{}方法体 5):可选static,表示静态的方法,可以 ...
- PermGen space
MyEclipse内存空间不足,调整空间操作: 1.点击"Run"-"Run Configurations",在打开的窗口中点击"Arguments& ...
- wkhtmltopdf 将网页转换为PDF和图片
wkhtmltopdf 是一个shell工具,它使用了WebKit渲染引擎和Qt,将网页html转换为pdf的强大工具,转换后的pdf也可以通过pdf工具进行复制.备注.修改 官网下载地址:http: ...
- 在nginx中配置ip直接访问的默认站点
一台机子部署多个网站,我们直接访问ip (外网内网都一样)提示无法访问或404. 因为有多个网站,我们想指定某个网站为IP访问默认的网站,如何操作呢? 解:在Listen ip:port; 这个指令行 ...
- 攻城狮在路上(陆)-- 提交运行MapReduce程序到hadoop集群运行
此种方式不能直接在eclipse中调试代码. 首先需要在src下放置服务器上的hadoop配置文件:core-site.xml\yarn-site.xml\hdfs-site.xml\mapred-s ...
- Conditional project or library reference in Visual Studio
Conditional project or library reference in Visual Studio In case you were wondering why you haven’t ...
- CozyRSS开发记录12-MVVM,绑定RSS源和数据
CozyRSS开发记录12-MVVM,绑定RSS源和数据 1.引入MvvmLight MVVM最近貌似在前端那块也挺火的.据说,WPF的程序如果不用MVVM,那跟MFC和winform的,也没啥区别. ...
- NoSql数据库初探-mongoDB环境搭建
NoSQL数据库一改关系型数据库的缺点,更容易的集成.分布式.无模式.故障恢复等特点,正在一步步餐食关系型数据库的市场,作为一个与时俱进的码农了解一下新技术是必须的,尤其是在读了<NoSql精粹 ...
- 解决scrollview和viewpager冲突
import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; i ...