snmp学习笔记

摘要:
snmp5.5client包含头文件#include#include用到的函数有:初始化snmp库:voidinit_snmp(constchar*);用于初始化snmp库netsnmp_session*snmp_open(netsnmp_session*);打开socket并绑定响

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学习笔记》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python的插件化开发概述云计算商家必争之地 推荐几款云平台下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

三、搞定Service接口和实现类

1.建包com.myz.service.interfaces,用于存放接口,包com.myz.service.imps,用于存放实现类 2.包com.myz.service.interfaces下新建接口EmployeeServiceInterface packagecom.myz.service.interfaces; importjava.io.Se...

zabbix监控华为交换机

1、交换机启动SNMP Agent服务 system-view //进入系统视图 snmp-agent //启动SNMP Agent服务 snmp-agent local-engineid [engineid] //配置本地SNMP实体的引擎ID snmp-agent sys-info v...

SpringBoot2.x 整合Spring-Session实现Session共享

SpringBoot2.x 整合Spring-Session实现Session共享 1.前言 发展至今,已经很少还存在单服务的应用架构,不说都使用分布式架构部署, 至少也是多点高可用服务。在多个服务器的情况下,Seession共享就是必须面对的问题了。 解决Session共享问题,大多数人的思路都是比较清晰的, 将需要共享的数据存在某个公共的服务中,如缓存...

Laravel session的保存机制

与$_SESSION不同Laraver中的session是在当次程序执行完毕时保存到文件或其他存储引擎中的,也就是说如果使用了die等强制结束程序的函数将不会自动保存session导致session失效,但Laravel提供了save()方法来手动保存session //session不生效的例子 session()->put(['user_id'=...

QQ一键登录功能的实现过程

QQ登录的思路: 当qq登陆成功后,QQ会给我们返回一个唯一的用户标识:openId,当用户授权QQ时,判断 if(已经有openId){ 跳转到登陆后的页面。 }else if(没有openId){ 跳转到注册页面->然后绑定->跳转到登陆后的页面...

POJ 3281 Dining (网络流之最大流)

题意:农夫为他的 N (1 ≤ N ≤ 100) 牛准备了 F (1 ≤ F ≤ 100)种食物和 D (1 ≤ D ≤ 100) 种饮料。每头牛都有各自喜欢的食物和饮料, 而每种食物或饮料只能分配给一头牛。最多能有多少头牛可以同时得到喜欢的食物和饮料? 析:是一个经典网络流的题,建立一个超级源点,连向每种食物,建立一个超级汇点,连向每种饮料,然后把每头牛...