日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

snmp安装及自定义mib

發布時間:2023/12/31 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。