snmp安装及自定义mib
准备工作 CentOS7
, net-snmp-5.7.2
1.snmp
安装及配置
安装snmp
- net-snmp: snmp服务端
- net-snmp-utils:snmp客户端工具集
- net-snmp-perl:snmp mib库编译工具
yum install -y net-snmp net-snmp-utils net-snmp-perl
配置snmp
...#com2sec notConfigUser default public
# 配置允许访问agent的地址
com2sec notConfigUser 192.168.51.0/24 public
# 这两行注释
#view systemview included .1.3.6.1.2.1.1
#view systemview included .1.3.6.1.2.1.25.1.1# 新增,表示可以查看所有的信息
view all included .1
view systemview included .1
# 修改read为all
access notConfigGroup "" any noauth exact all none none
...
启动并验证snmp
# 192.168.52.104
systemctl start snmpd
systemctl enable snmpd# snmpwalk -v 2c -c public 192.168.51.104 sysName.0
SNMPv2-MIB::sysName.0 = STRING: work1
2.mib
编写及加载
自定义mib
# TEST-MIB.txt
-- TEST-MIB.txtTEST-MIB DEFINITIONS ::= BEGINIMPORTSOBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUPFROM SNMPv2-CONFenterprises, Integer32, Unsigned32, OBJECT-TYPE, MODULE-IDENTITY,NOTIFICATION-TYPEFROM SNMPv2-SMIDisplayStringFROM SNMPv2-TC;Test MODULE-IDENTITYLAST-UPDATED "202204061450Z" --必须以Z结尾ORGANIZATION""CONTACT-INFO""DESCRIPTION"Video's Server MIB."::= { enterprises 30000 }Time OBJECT IDENTIFIER ::= { Test 1 }GetTime OBJECT-TYPESYNTAX DisplayStringMAX-ACCESS read-onlySTATUS currentDESCRIPTION"Example : 2022/4/6"::= { Time 1 }END
-- TEST-MIB.txt
移动TEST-MIB.txt到SNMP mibs
mv TEST-MIB.txt usr/share/snmp/mibs/
新建目录并将mib文件转化为c文件
mkdir mib_test
cd mib_test
env MIBS="+/usr/share/snmp/mibs/TEST-MIB.txt" mib2c Test
#执行完成会生成 Test.h Test.c
编译自定义mib
补全Test.c
/** Note: this file originally auto-generated by mib2c using* $*/#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "Test.h"/** Initializes the Test module */
void
init_Test(void)
{const oid GetTime_oid[] = { 1,3,6,1,4,1,30000,1,1 };DEBUGMSGTL(("Test", "Initializing\n"));netsnmp_register_scalar(netsnmp_create_handler_registration("GetTime", handle_GetTime,GetTime_oid, OID_LENGTH(GetTime_oid),HANDLER_CAN_RONLY));
}int
handle_GetTime(netsnmp_mib_handler *handler,netsnmp_handler_registration *reginfo,netsnmp_agent_request_info *reqinfo,netsnmp_request_info *requests)
{/* 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. */time_t t;switch(reqinfo->mode) {case MODE_GET:time(&t);char szTime[100];snprintf(szTime,100,"%s",ctime(&t));snmp_set_var_typed_value(requests->requestvb, ASN_OCTET_STR,/* XXX: a pointer to the scalar's data */szTime,/* XXX: the length of the data in bytes */strlen(szTime));break;default:/* we should never get here, so this is a really bad error */snmp_log(LOG_ERR, "unknown mode (%d) in handle_GetTime\n", reqinfo->mode );return SNMP_ERR_GENERR;}return SNMP_ERR_NOERROR;
}
编写makefile
CC=gcc
FLAGS=-I. `net-snmp-config --cflags` -g
DLFLAGS=-shared -fPIC -gTest.so: Test.c$(CC) $(CFLAGS) $(DLFLAGS) -c -o Test.o Test.c$(CC) $(CFLAGS) $(DLFLAGS) -o Test.so Test.o.PHONY : clean
clean :rm -f *.so *.o
执行编译
make makefile
# 执行完毕会生成Test.so
配置snmp加载Test.so
# 配置snmp /etc/snmp/snmpd.conf# 最后添加
dlmod Test /root/aa/Test.so
重新启动snmp
systemctl restart snmpd
systemctl status snmpd #查看snmpd是否正常启动
3.验证自定义的mib
是否生效
snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.30000.1.1
SNMPv2-SMI::enterprises.30000.1.1.0 = STRING: "Wed Apr 6 10:20:53 2022
"
4.mib
的添加方式
常见的snmp添加自定义mib库的方式有以下3种
静态加载
将生成的.c和.h文件加入到相应的位置,重新编译snmp库,优点是不需要修改配置文件,缺点是每次添加都得重新编译,方式如下。
# 把Test.c和Test.h复制到net-snmp源码中 net-snmp-5.7.2/agent/mibgroup,然后编译安装./configure --prefix=/usr/local/snmp --with-mib-modules=Test,make && make install
动态加载
将生成的.c和.h文件再编译成.so库,修改snmpd.conf配置文件,优点是每次添加不需要重新编译,缺点是必须支持dlmod命令。
子代理扩展
将生成的.c和.h文件编译成可执行程序,运行该程序和snmpd即可,优点是操作简单,缺点是需要运行两个程序才行,方式如下。
# 生成Test程序:
net-snmp-config --compile-subagent Test Test.c
# 启动snmpd,Test
systemctl start snmpd
./Test
snmp安装及自定义mib相关推荐
- Ubuntu上snmp安装、配置、启动及远程测试完整过程
0.说明 关于一个完整的教程,还是那句话,国内的要么不完整,要么就太旧了,而且思路也不清晰,所以这里写一篇完整的给大家分享一下. 虽然对于Linux主机的监控可以通过执行特定的命令来完成,但是相比之后 ...
- 安装MYSQL自定义安装路径
安装MYSQL自定义安装路径 MYSQL8.0版本,使用开发者默认安装的话,会自动安装到C盘,有点小介意,所以又卸载重新安装了,卸载过程中遇到了一些小问题,MySQL Connector NET无法卸 ...
- wamp2 php配置,wamp安装后自定义配置的方法
WampServer是目前应用非常广泛的PHP集成开发环境,本文就来讲述Wamp安装后自定义配置的方法.供大家参考借鉴.具体如下: wamp2.5安装完毕后,自己手动重新设置了apache的默认根目录 ...
- zsh安装与自定义主题
zsh安装与自定义主题 Zsh(Z-shell)是一款用于交互式使用的shell,也可以作为脚本解释器来使用.其包含了 bash, ksh,tcsh 等其他shell中许多优秀功能,也拥有诸多 ...
- GCC 安装到自定义目录
GCC 安装到自定义目录, source [1] tar xzf gcc-4.6.2.tar.gz cd gcc-4.6.2 ./contrib/download_prerequisites cd . ...
- 【snmp】net-snmp添加自定义MIB(表格)
snmp 表格支持增删改查操作,比标量节点多了增删操作,那么为了实现增删操作,可以向表格增加一个RowStatus行状态类型的列,通过设置状态值对表格进行控制. RowStatus状态值 状态 说明 ...
- linux ubantu snmp服务,ubuntu 20.04 snmp安装配置
一.SNMP MANAGER 安装 1. 命令行安装 1.1 安装对应软件包 sudo apt-get update sudo apt-get install snmp 1.2 配置 修改 /etc/ ...
- SNMP介绍, OID及MIB库
1 SNMP概览 1.1 SNMP的基本知识介绍 简单网络管理协议(SNMP-Simple Network Management Protocol)是一个与网络设备交互的简单方法.该规范是由IETF在 ...
- Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
1.Jupyter Notebook 和 pip 为了更加方便地写 Python 代码,还需要安装 Jupyter notebook. 利用 pip 安装 Jupyter notebook. 为什么要 ...
- centos minimal 安装无法自定义分区
安装了太多版本的linux,最后还是决定安装CentOS的minimal版本: 安装的时候发现,没办法自定义分区,经查确实在命令行界面下安装是没有自定义分区的. 但是不管怎么安装都是没有图形介面,最后 ...
最新文章
- Strutsw2与Spring整合流程-简述
- web个人主页制作代码_关于嵌入式web服务器
- mysql多实例(三种方法)
- iOS学习 NSString常用技巧
- NLP复习资料(7)-机器翻译、文本分类、情感分析
- C#中几种数据库的大数据批量插入
- OSPF的虚链路配置
- c++ new, operator new, placement new
- ios平台实现局域网ip扫描
- 如何在Ubuntu 13.04, 13.10上安装Sublime Text 3
- 实时查询系统架构:spark流式处理+HBase+solr/ES查询
- latex table 表格 文字太长 自动换行
- DSP28335定时器学习
- protoc执行命令
- 未兼容android9系统魔秀桌面,魔秀桌面(com.moxiu.launcher) - 7.2.9.2 - 应用 - 酷安
- ICML2022论文解读『Sparse Double Descent: Where Network Pruning Aggravates Overfitting』
- 0基础怎么画出好看的水彩画美术集水彩教程入门级教程
- python练习五——PTA
- pandas 筛选行 整行复制粘贴
- 前端代码是怎样智能生成的