准备工作 CentOS7net-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相关推荐

  1. Ubuntu上snmp安装、配置、启动及远程测试完整过程

    0.说明 关于一个完整的教程,还是那句话,国内的要么不完整,要么就太旧了,而且思路也不清晰,所以这里写一篇完整的给大家分享一下. 虽然对于Linux主机的监控可以通过执行特定的命令来完成,但是相比之后 ...

  2. 安装MYSQL自定义安装路径

    安装MYSQL自定义安装路径 MYSQL8.0版本,使用开发者默认安装的话,会自动安装到C盘,有点小介意,所以又卸载重新安装了,卸载过程中遇到了一些小问题,MySQL Connector NET无法卸 ...

  3. wamp2 php配置,wamp安装后自定义配置的方法

    WampServer是目前应用非常广泛的PHP集成开发环境,本文就来讲述Wamp安装后自定义配置的方法.供大家参考借鉴.具体如下: wamp2.5安装完毕后,自己手动重新设置了apache的默认根目录 ...

  4. zsh安装与自定义主题

    zsh安装与自定义主题 ​   Zsh(Z-shell)是一款用于交互式使用的shell,也可以作为脚本解释器来使用.其包含了 bash, ksh,tcsh 等其他shell中许多优秀功能,也拥有诸多 ...

  5. GCC 安装到自定义目录

    GCC 安装到自定义目录, source [1] tar xzf gcc-4.6.2.tar.gz cd gcc-4.6.2 ./contrib/download_prerequisites cd . ...

  6. 【snmp】net-snmp添加自定义MIB(表格)

    snmp 表格支持增删改查操作,比标量节点多了增删操作,那么为了实现增删操作,可以向表格增加一个RowStatus行状态类型的列,通过设置状态值对表格进行控制. RowStatus状态值 状态 说明 ...

  7. linux ubantu snmp服务,ubuntu 20.04 snmp安装配置

    一.SNMP MANAGER 安装 1. 命令行安装 1.1 安装对应软件包 sudo apt-get update sudo apt-get install snmp 1.2 配置 修改 /etc/ ...

  8. SNMP介绍, OID及MIB库

    1 SNMP概览 1.1 SNMP的基本知识介绍 简单网络管理协议(SNMP-Simple Network Management Protocol)是一个与网络设备交互的简单方法.该规范是由IETF在 ...

  9. Windows下的Jupyter Notebook 安装与自定义启动(图文详解)

    1.Jupyter Notebook 和 pip 为了更加方便地写 Python 代码,还需要安装 Jupyter notebook. 利用 pip 安装 Jupyter notebook. 为什么要 ...

  10. centos minimal 安装无法自定义分区

    安装了太多版本的linux,最后还是决定安装CentOS的minimal版本: 安装的时候发现,没办法自定义分区,经查确实在命令行界面下安装是没有自定义分区的. 但是不管怎么安装都是没有图形介面,最后 ...

最新文章

  1. Strutsw2与Spring整合流程-简述
  2. web个人主页制作代码_关于嵌入式web服务器
  3. mysql多实例(三种方法)
  4. iOS学习 NSString常用技巧
  5. NLP复习资料(7)-机器翻译、文本分类、情感分析
  6. C#中几种数据库的大数据批量插入
  7. OSPF的虚链路配置
  8. c++ new, operator new, placement new
  9. ios平台实现局域网ip扫描
  10. 如何在Ubuntu 13.04, 13.10上安装Sublime Text 3
  11. 实时查询系统架构:spark流式处理+HBase+solr/ES查询
  12. latex table 表格 文字太长 自动换行
  13. DSP28335定时器学习
  14. protoc执行命令
  15. 未兼容android9系统魔秀桌面,魔秀桌面(com.moxiu.launcher) - 7.2.9.2 - 应用 - 酷安
  16. ICML2022论文解读『Sparse Double Descent: Where Network Pruning Aggravates Overfitting』
  17. 0基础怎么画出好看的水彩画美术集水彩教程入门级教程
  18. python练习五——PTA
  19. pandas 筛选行 整行复制粘贴
  20. 前端代码是怎样智能生成的

热门文章

  1. 跟着杨中科学习asp.net之dom
  2. awk命令详解+示例
  3. 国外除了Google还有什么搜索引擎?
  4. CSS-fishc学习笔记
  5. 算法竞赛入门经典 aabb
  6. 物联网技术的基站能耗监控解决方案
  7. 让注册体验来得更简单点吧
  8. idea+java+selenium自动化测试环境搭建
  9. 调研AutoGluon数据处理与Tabular-NN
  10. 项目实战 五 拟合直线 获得中线