snmp 自定义子代理mib库
测试环境:centos8
1、安装软件
yum install -y net-snmp net-snmp-utils
yum install -y net-snmp-perl net-snmp-devel net-snmp-libs
2、创建用户
net-snmp-create-v3-user
输入用户名 soft
输入密码 123456
输入密码 654321
service snmpd restart
3、创建mib文件
cd /usr/local/share/snmp/mibs
vim TEST-MIB.txt
--开始
TEST-MIB DEFINITIONS ::= BEGIN--引入部分
IMPORTSDisplayString,TestAndIncr,PhysAddress,MacAddress,DateAndTime,RowStatus,TEXTUAL-CONVENTIONFROM SNMPv2-TCenterprisesFROM RFC1155-SMIMODULE-IDENTITY,OBJECT-TYPE,NOTIFICATION-TYPE,Integer32,IpAddress,TimeTicks,Unsigned32FROM SNMPv2-SMI;
--引用结束,用分号--定义节点
--enterprises的OID是1.3.6.1.4
testMib OBJECT IDENTIFIER ::= { enterprises 20001 }system OBJECT IDENTIFIER ::= { testMib 1 }--set节点
systemAlarmSet OBJECT IDENTIFIER ::= { system 3 }setMemThreshold OBJECT-TYPE
SYNTAX TestAndIncr
MAX-ACCESS read-write
STATUS current
DESCRIPTION "set cpu Threshold"
::= { systemAlarmSet 1 }setCpuThreshold OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-write
STATUS current
DESCRIPTION "set cpu Threshold"
::= { systemAlarmSet 2}--结束定义
END
生成.c和.h文件
sudo env MIBS="+/usr/share/snmp/mibs/TEST-MIB.txt" mib2c testMib
选择
2
1
y
查看mib树
snmptranslate -Tp -IR TEST-MIB::testMib
修改.c文件
vim testMib.c
/** Note: this file originally auto-generated by mib2c* using mib2c.scalar.conf*/#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "testMib.h"long value = 0;
char *value2 = 0;/** Initializes the testMib module */
void
init_testMib(void)
{const oid setMemThreshold_oid[] = { 1,3,6,1,4,1,20001,1,3,1 };const oid setCpuThreshold_oid[] = { 1,3,6,1,4,1,20001,1,3,2 };DEBUGMSGTL(("testMib", "Initializing\n"));netsnmp_register_scalar(netsnmp_create_handler_registration("setMemThreshold", handle_setMemThreshold,setMemThreshold_oid, OID_LENGTH(setMemThreshold_oid),HANDLER_CAN_RWRITE));netsnmp_register_scalar(netsnmp_create_handler_registration("setCpuThreshold", handle_setCpuThreshold,setCpuThreshold_oid, OID_LENGTH(setCpuThreshold_oid),HANDLER_CAN_RWRITE));
}int
handle_setMemThreshold(netsnmp_mib_handler *handler,netsnmp_handler_registration *reginfo,netsnmp_agent_request_info *reqinfo,netsnmp_request_info *requests)
{int ret;/* We are never called for a GETNEXT if it's registered as a"instance", as it's "magically" handled for us. *//* a instance handler also only hands us one request at a time, sowe don't need to loop over a list of requests; we'll only get one. */switch(reqinfo->mode) {case MODE_GET:snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,(u_char *) &value/* XXX: a pointer to the scalar's data */,sizeof(value)/* XXX: the length of the data in bytes */);break;/** SET REQUEST** multiple states in the transaction. See:* http://www.net-snmp.org/tutorial-5/toolkit/mib_module/set-actions.jpg*/case MODE_SET_RESERVE1:/* or you could use netsnmp_check_vb_type_and_size instead */ret = netsnmp_check_vb_type(requests->requestvb, ASN_INTEGER);if ( ret != SNMP_ERR_NOERROR ) {netsnmp_set_request_error(reqinfo, requests, ret );}break;case MODE_SET_RESERVE2:/* XXX malloc "undo" storage buffer */if (0/* XXX if malloc, or whatever, failed: */) {netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_RESOURCEUNAVAILABLE);}break;case MODE_SET_FREE:/* XXX: free resources allocated in RESERVE1 and/orRESERVE2. Something failed somewhere, and the statesbelow won't be called. */break;case MODE_SET_ACTION:/* XXX: perform the value change here *///memcpy(&value, setValue, sizeof(setValue));value = *(requests->requestvb->val.integer);if (0/* XXX: error? */) {netsnmp_set_request_error(reqinfo, requests, 0/* some error */);}break;case MODE_SET_COMMIT:/* XXX: delete temporary storage */value = *(requests->requestvb->val.integer);if (0/* XXX: error? */) {/* try _really_really_ hard to never get to this point */netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_COMMITFAILED);}break;case MODE_SET_UNDO:/* XXX: UNDO and return to previous value for the object */if (0/* XXX: error? */) {/* try _really_really_ hard to never get to this point */netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_UNDOFAILED);}break;default:/* we should never get here, so this is a really bad error */snmp_log(LOG_ERR, "unknown mode (%d) in handle_setMemThreshold\n", reqinfo->mode );return SNMP_ERR_GENERR;}return SNMP_ERR_NOERROR;
}
int
handle_setCpuThreshold(netsnmp_mib_handler *handler,netsnmp_handler_registration *reginfo,netsnmp_agent_request_info *reqinfo,netsnmp_request_info *requests)
{int ret;/* We are never called for a GETNEXT if it's registered as a"instance", as it's "magically" handled for us. *//* a instance handler also only hands us one request at a time, sowe don't need to loop over a list of requests; we'll only get one. */switch(reqinfo->mode) {case MODE_GET:snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,(u_char *) value2/* XXX: a pointer to the scalar's data */,strlen(value2 + 1 )/* XXX: the length of the data in bytes */);break;/** SET REQUEST** multiple states in the transaction. See:* http://www.net-snmp.org/tutorial-5/toolkit/mib_module/set-actions.jpg*/case MODE_SET_RESERVE1:/* or you could use netsnmp_check_vb_type_and_size instead */ret = netsnmp_check_vb_type(requests->requestvb, ASN_INTEGER);if ( ret != SNMP_ERR_NOERROR ) {netsnmp_set_request_error(reqinfo, requests, ret );}break;case MODE_SET_RESERVE2:/* XXX malloc "undo" storage buffer */if (0/* XXX if malloc, or whatever, failed: */) {netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_RESOURCEUNAVAILABLE);}break;case MODE_SET_FREE:/* XXX: free resources allocated in RESERVE1 and/orRESERVE2. Something failed somewhere, and the statesbelow won't be called. */break;case MODE_SET_ACTION:/* XXX: perform the value change here */if (0/* XXX: error? */) {netsnmp_set_request_error(reqinfo, requests, 0/* some error */);}break;case MODE_SET_COMMIT:/* XXX: delete temporary storage */free(value2);value2 = strdup((char*)requests->requestvb->val.string);if (0/* XXX: error? */) {/* try _really_really_ hard to never get to this point */netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_COMMITFAILED);}break;case MODE_SET_UNDO:/* XXX: UNDO and return to previous value for the object */if (0/* XXX: error? */) {/* try _really_really_ hard to never get to this point */netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_UNDOFAILED);}break;default:/* we should never get here, so this is a really bad error */snmp_log(LOG_ERR, "unknown mode (%d) in handle_setCpuThreshold\n", reqinfo->mode );return SNMP_ERR_GENERR;}return SNMP_ERR_NOERROR;
}
修改配置
vim /etc/snmp/snmpd.conf
master agentx
rwcommunity public
代理加载
net-snmp-config --compile-subagent testMib testMib.c
./testMib
重启服务
service snmpd restart
测试
snmpwalk -v3 -u soft -A 123456 -a MD5 -l authPriv -X 654321 -x DES localhost 1.3.6.1.4.1.20001.1.3.1.0
snmpset -v3 -u soft -A 123456 -a MD5 -l authPriv -X 654321 -x DES localhost 1.3.6.1.4.1.20001.1.3.1.0 i 20
snmpwalk -v3 -u soft -A 123456 -a MD5 -l authPriv -X 654321 -x DES localhost 1.3.6.1.4.1.20001.1.3.2.0
snmpset -v3 -u soft -A 123456 -a MD5 -l authPriv -X 654321 -x DES localhost 1.3.6.1.4.1.20001.1.3.2.0 s 'hello'
相关文章:
snmp 自定义子代理mib库
测试环境:centos8 1、安装软件 yum install -y net-snmp net-snmp-utils yum install -y net-snmp-perl net-snmp-devel net-snmp-libs 2、创建用户 net-snmp-create-v3-user 输入用户名 soft 输入密码 123456 输入密码 654321 service snmpd restart 3、创建…...
一文说透安全沙箱技术
在数字经济的东风中,数据安全至关重要。目前已经颁布了包括《数据安全法》、《个人信息保护法》和《数据安全管理办法》在内的国家政策,以促进整个数据要素的发展。 而近年来,随着移动应用程序的普及和小程序技术的崛起,安全沙箱…...
Java多线程基础面试总结(二)
创建三种线程的方式对比 使用实现Runnable、Callable接口的方式创建多线程。 优势 Java的设计是单继承的设计,如果使用继承Thread的方式实现多线程,则不能继承其他的类,而如果使用实现Runnable接口或Callable接口的方式实现多线程…...
NS32F407VGT6 NS32F407VET6软硬件通用STM32F407VGT6 407VET6
NS32F407VGT6 NS32F407VET6 器件基于高性能的 ARM Cortex-M4 32 位 RISC 内核,工作频率高达 168MHz 。 Cortex-M4 内核带有单精度浮点运算单元 (FPU) ,支持所有 ARM 单精度数据处理指令和数据类型。它还 具有一组 DSP 指令和提高应用安全性的一…...
Openstack: network: ovs: dpif/show 实例分析:interface
[TOC 实例 [cbis-adminovercloud–13 (overcloudrc) ~]$ sudo ovs-appctl dpif/show systemovs-system: hit:75198007884 missed:109924265 br-ex: br-ex 65534/3: (internal) ,65534 是port number; OpenFlow port number; 3 是 ofp_port_to_odp_port(ofproto, o…...
必要的项目管理软件因素
什么样的项目管理软件好?对于一个项目团队来说,从项目开始到项目结束,需要多个部门的配合。每个成员可能会参与一个以上的项目,这通常需要并行的多个项目。据介绍,国外90%以上的项目是用软件管理的,而中国只…...
大学刚毕业,用10000小时,走进字节跳动拿了offer
前言: 没有绝对的天才,只有持续不断的付出。对于我们每一个平凡人来说,改变命运只能依靠努力幸运,但如果你不够幸运,那就只能拉高努力的占比。 2020年7月,我有幸成为了字节跳动的一名测试开发,…...
docker 安装 redis
搜索镜像 docker search redis 拉取最新版本 Docker pull redis Docker挂载配置文件 docker run --restartalways --log-opt max-size100m --log-opt max-file2 -p 6379:6379 --name myredis -v /opt/myredis/redis.conf:/etc/redis/redis.conf -v /opt/myredis/data:/d…...
Ceph常见问题
1. CephFS问题诊断 1.1 无法创建 创建新CephFS报错Error EINVAL: pool ‘rbd-ssd’ already contains some objects. Use an empty pool instead,解决办法: ceph fs new cephfs rbd-ssd rbd-hdd --force1.2 mds.0 is damaged 断电后出现此问题。MDS进…...
Android---Jetpack之Paging
目录 Paging 组件的意思 Paging 支持的架构类型 Paging 的工作原理 PositionalDataSource PagekeyedDataSource ItemKeyedDataSource BoundaryCallback Paging 组件的意思 分页加载是在应用程序开发过程中十分常见的需求,Paging 就是 Google 为了方便 Andr…...
gensim.models.word2vec() 参数详解
1. Word2vec简介 Word2vec是一个用来产生词向量的模型。是一个将单词转换成向量形式的工具。 通过转换,可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。 2.Word2vec参数详解 class…...
光栅和矢量图像处理SDK:Graphics Mill 11.7Crack
Graphics Mill 是适用于 .NET 和 ASP.NET 开发人员的最强大的成像工具集。它允许用户轻松地向 .NET 应用程序添加复杂的光栅和矢量图像处理功能。 光栅图形 加载和保存 JPEG、PNG PSD 和其他 8 种图像格式 调整大小、裁剪、自动修复、色度键和 30 多种其他图像处理 使用任何维度…...
阿里云的客服 锻炼你心性的 一种方式 !!!
阿里云的产品,非常棒,开发的同学非常棒,专家们更棒,但,一切的开始就怕一个但字,但我还的说,但,阿里云的客服,OMG ,我已经忍耐了 1年了,是在忍不住…...
Linux常用的网络命令有哪些?快速入门!
在Linux系统中,有许多常用的网络命令可以用来进行网络配置和故障排除。这些命令可以帮助我们了解网络的状态和性能,并且可以快速诊断和解决网络问题。在本文中,我们将介绍一些常用的Linux网络命令,并提供一些案例来帮助您更好地理…...
PMP认证价值在哪?这个证书有什么用?
PMP证书是全球最权威的项目管理证书之一,获得该证书可以证明持证者具备高水平的项目管理知识和技能,拥有广泛的项目管理经验,并且符合全球项目管理行业的标准和规范。PMP证书的作用主要体现在以下几个方面: 1. 提升竞争力 在全球…...
一条更新语句的执行流程又是怎样的呢?
当一个表上有更新的时候,跟这个表有关的查询缓存会失效,所以这条语句就会把表T上所有缓存结果都清空。这也就是我们一般不建议使用查询缓存的原因。 接下来,分析器会通过词法和语法解析知道这是一条更新语句。优化器决定要使用ID这个索引。然…...
promise异步编程指南
promise 是什么 Promise 是异步编程的一种解决方案,可以替代传统的解决方案–回调函数和事件。ES6 统一了用法,并原生提供了 Promise 对象。作为对象,Promise 有以下两个特点: (1)对象的状态不受外界影响。 (2)一旦状态改变了就不…...
20230411----重返学习-网易云音乐首页案例-git远程仓库
day-047-forty-seven-20230411-网易云音乐首页案例-git远程仓库 网易云音乐首页案例 事件委托 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>2.事件委托</title><style>.parent-box…...
Ansys Zemax | 模拟 AR 系统中的全息光波导:第二部分
AR 系统通常使用全息图将光耦合到波导中。本文展示了如何继续改进 本系列文章的第一部分 (点击查看)中建模的初步设计。(联系我们获取文章附件) 简介 AR 是一种允许屏幕上的虚拟世界与现实场景结合并交互的技术。 本文演示了如何…...
常用Git命令
整理了一些常用的git命令,备忘 查看仓库状态 git status查看提交记录 git log创建本地分支 git branch [branch name]创建远程分支 git push origin [branch name]查看本地分支 git branch -v查看远程分支 git branch -a切换分支 git checkout [branch name]查看远程…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...
