net-snmp添加自定義mib樹

首先我們把前面mib2c生成的文件修改 下面重新做了個簡單點的MIB樹

--
-- 
-- MIB generated by MG-SOFT Visual MIB Builder Version 6.0  Build 88
-- Saturday, July 26, 2025 at 09:24:54
--ARHANGELSK-GLOBAL-REG DEFINITIONS ::= BEGINIMPORTSenterprises, OBJECT-TYPE, MODULE-IDENTITY			FROM SNMPv2-SMI;-- 1.3.6.1.4.1.2arhangelskNode1 MODULE-IDENTITY LAST-UPDATED "202507251837Z"		-- July 25, 2025 at 18:37 GMTORGANIZATION "Organization."CONTACT-INFO "Contact-info."DESCRIPTION "Description."::= { enterprises 2 }--
-- Node definitions
---- 1.3.6.1.4.1.2.1arhangelskNode0 OBJECT-TYPESYNTAX INTEGERMAX-ACCESS read-writeSTATUS currentDESCRIPTION"Description."::= { arhangelskNode1 1 }END--
-- 
--

只有一個int型的值 可讀寫

然后我們使用mib2c生成對應的框架代碼 ,這里只有標量 所以只需要生成一次,生成之后我們把對應的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 "arhangelskNode1.h"/* 定義標量節點的 OID 和存儲變量 */
#define ARHANGELSKNODE0_OID "1.3.6.1.4.1.2.1"
static int arhangelskNode0_value = 42;  // 初始值
/** Initializes the arhangelskNode1 module */
void
init_arhangelskNode1(void)
{const oid arhangelskNode0_oid[] = { 1,3,6,1,4,1,2,1 };DEBUGMSGTL(("arhangelskNode1", "Initializing\n"));netsnmp_register_scalar(netsnmp_create_handler_registration("arhangelskNode0", handle_arhangelskNode0,arhangelskNode0_oid, OID_LENGTH(arhangelskNode0_oid),HANDLER_CAN_RWRITE));
}int
handle_arhangelskNode0(netsnmp_mib_handler *handler,netsnmp_handler_registration *reginfo,netsnmp_agent_request_info   *reqinfo,netsnmp_request_info         *requests)
{int ret;int new_value;/* 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*)&arhangelskNode0_value,  // 數據指針sizeof(arhangelskNode0_value)     // 數據長度);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:/* 驗證輸入類型 */ret = netsnmp_check_vb_type(requests->requestvb, ASN_INTEGER);if (ret != SNMP_ERR_NOERROR) {netsnmp_set_request_error(reqinfo, requests, ret);return ret;}break;case MODE_SET_RESERVE2:/* 分配臨時存儲(非必需,此處省略) */break;case MODE_SET_FREE:/* 釋放臨時資源(此處省略) */break;case MODE_SET_ACTION:/* 更新值并驗證范圍 */new_value = *(int*)requests->requestvb->val.string;if (new_value < 0 || new_value > 100) {return SNMP_ERR_WRONGVALUE;  // 值越界}arhangelskNode0_value = new_value;break;break;case MODE_SET_COMMIT:/* 提交變更(此處省略) */break;case MODE_SET_UNDO:/* 回滾變更(此處省略) */break;default:/* we should never get here, so this is a really bad error */snmp_log(LOG_ERR, "unknown mode (%d) in handle_arhangelskNode0\n", reqinfo->mode );return SNMP_ERR_GENERR;}return SNMP_ERR_NOERROR;
}

這里主要修改了設置和獲取值時候的邏輯

修改完之后 我們就可以把這些代碼集成到net-snmp

我們先從官網下載net-snmp

Net-SNMP

這里我下載的是net-snmp-5.9.4

先安裝依賴環境

apt install -y build-essential libssl-dev libperl-dev pkg-config

然后解壓源碼包,解壓后:

把我們前面mib2c生成的.c .h文件拷貝到源碼目錄agent/mibgroup下面

然后進行配置?configure后面接的是我們的模塊名

./configure --with-mib-modules="arhangelskNode1"

然后就是 編譯生成 make 、make install

完成之后 會在 snmpd 會拷貝到?/usr/local/sbin/snmpd

源碼編譯之后沒有snmpd.conf 自己可以從其他地方拷貝一個 或者vi新建一個

然后就可以通過 如下命令啟動snmpd snmpd.conf在當前目錄下

snmpd -c snmpd.conf 

如果提示

snmpd: error while loading shared libraries: libnetsnmpagent.so.40: cannot open shared object file: No such file or directory

實際這個文件存在

這個時候需要ldconfig就好了

有其他文件我們可以通過snmpd -c /etc/snmp/snmpd.conf -f -Le -d 命令調試啟動過程中遇到的問題

啟動之后我們就可以測試了

假設我們的配置文件snmpd.conf如下:

# 創建用戶時指定不同密碼
createUser test MD5 "12345678" DES "123456789"
rwuser test# 視圖配置
view SystemView included .1.3.6.1.4.1.2
view SystemView included .1.3.6.1.2.1.25.1# 訪問控制
rocommunity public default -V SystemView

然后我們啟動snmpd 測試結果如下

注意最后一項 不能省略后面的.0 不然會提示有問題 這里也可以看到 DES沒有用 具體我也不知道為什么 但是如果帶了des參數的話不能太短 應該是對密碼長度有要求

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/90703.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90703.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90703.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【動態規劃-斐波那契數列模型】理解動態規劃:斐波那契數列的遞推模型

算法相關知識點可以通過點擊以下鏈接進行學習一起加油&#xff01;動態規劃是一種解決最優化問題的強大技術&#xff0c;通過將問題分解為子問題并逐步求解來實現高效計算。斐波那契數列是動態規劃中經典的應用之一&#xff0c;其遞推關系非常適合用動態規劃進行優化。通過動態…

微信小程序 自定義帶圖片彈窗

1. 微信小程序 自定義帶圖片彈窗1.1. 實現思路使用官方組件實現圖片模態彈窗。首先找到官方文檔&#xff1a;?顯示模態彈窗的API wx.showModal(OBJECT)wx.showModal參數介紹發現并沒有設置圖片的參數&#xff0c;但是這是一個API&#xff0c;但是組件呢&#xff1f;我并沒有在…

私有化大模型架構解決方案構建指南

內容概要本指南旨在為企業提供私有化大模型架構解決方案的全面構建路徑&#xff0c;幫助其在保障數據隱私的同時提升業務效率。我們將系統解析關鍵環節&#xff0c;包括安全部署策略設計、模型訓練核心技術、持續優化機制構建以及知識管理實踐路徑。此外&#xff0c;指南還涵蓋…

面試150 查找和最小的K對數字

思路1 超時法&#xff1a;通過兩個循環記錄三元組[num1,num2,num1num2]然后通過num1num2從小到大進行排序&#xff0c;然后返回前K個對數中的前兩個數即可。 class Solution:def kSmallestPairs(self, nums1: List[int], nums2: List[int], k: int) -> List[List[int]]:if n…

vscode目錄,右鍵菜單加入用VSCode打開文件和文件夾(快速解決)(含刪除)(腳本)

1.創建文本文件 在桌面右鍵單擊&#xff0c;選擇“新建” > “文本文檔”&#xff0c;將其命名為“vscode.txt”2.復制代碼內容3.修改文件擴展名 右鍵單擊“vscode.txt”文件&#xff0c;選擇“重命名”&#xff0c;將文件擴展名從.txt改為.reg&#xff0c;使其成為“vscode…

Chart.js 柱形圖詳解

Chart.js 柱形圖詳解 引言 在數據可視化領域&#xff0c;柱形圖是一種非常常見的圖表類型&#xff0c;它能夠直觀地展示不同類別或組的數據之間的比較。Chart.js 是一個基于 HTML5 Canvas 的開源庫&#xff0c;它提供了一系列的圖表繪制功能&#xff0c;其中包括柱形圖。本文將…

沉浸式文旅新玩法-基于4D GS技術的真人數字人賦能VR體驗升級

線下沉浸式劇場與 LBE VR 相結合&#xff0c;會碰撞出什么樣的火花&#xff1f;本次 PICO 視頻、東方演藝集團與火山引擎一起&#xff0c;將沉浸式演出《只此周莊》的部分場景復刻到了 VR 世界&#xff0c;讓用戶在虛擬的古代周莊夜市里&#xff0c;體驗了古老的故事以及精彩紛…

C程序內存布局詳解

C程序內存布局詳解 1. 內存布局概述 C程序在內存中分為以下幾個主要區域&#xff08;從低地址到高地址&#xff09;&#xff1a; 代碼段&#xff08;.text&#xff09;只讀數據段&#xff08;.rodata&#xff09;初始化數據段&#xff08;.data&#xff09;未初始化數據段&…

新手向:Git下載全攻略

Git 的安裝與重要性在現代軟件開發中&#xff0c;版本控制是必不可少的工具&#xff0c;而 Git 是目前最流行的分布式版本控制系統。無論是個人開發者還是大型團隊&#xff0c;Git 都能高效管理代碼變更&#xff0c;確保項目歷史清晰可追溯。安裝 Git 是開發者入門的第一步&…

linux中如何清除history命令

寫在前面 使用ssh遠程連接客戶端連接上linux后操作的命令多了&#xff0c;有時候需要清除對應的歷史命令記錄&#xff0c;可以通過下面幾種方式實現。第一種方法 通過修改.bash_history文件 這是最簡單直接的方法&#xff0c;但是只會影響當前用戶的歷史記錄。執行以下命令即可…

PHP插件開發中的一個錯誤:JSON直接輸出導致網站首頁異常

問題描述 最近在使用步數統計插件&#xff08;WeFootStep&#xff09;時&#xff0c;發現網站首頁完全變成了一段JSON數據&#xff0c;而不是正常的HTML頁面。具體表現為首頁顯示如下內容&#xff1a; {"results":"<li><a href\"https:\/\/blog…

落霞歸雁的思維框架:十大經典思維工具的源頭活水

在當今復雜多變的世界中&#xff0c;思維框架成為了解決問題、優化決策和提升效率的重要工具。提到思維框架&#xff0c;人們往往會想到那些被廣泛認可和應用的十大經典思維工具&#xff1a;金字塔原理、黃金圈法則、5W1H分析法、SWOT分析、SCQA模型、STAR法則、PDCA循環、六頂…

spring Could 高頻面試題

一、基礎概念Spring Cloud 的核心組件有哪些&#xff1f; 答案&#xff1a;Eureka/Nacos&#xff08;服務注冊發現&#xff09;、Ribbon/LoadBalancer&#xff08;負載均衡&#xff09;、Feign/OpenFeign&#xff08;聲明式HTTP客戶端&#xff09;、Hystrix/Sentinel&#xff0…

從零開始的云計算生活——番外6,使用zabbix對中間件監控

目錄 一.網絡設備監控 1、GNS模擬器的使用 創建路由 創建交換機 2.構建網絡 3.添加Cisco路由器的監控 二.中間件監控 1、MySQL數據庫監控 1.1、拷貝自定義的監控腳本到指定目錄 1.2、添加監控用戶 1.3、重啟zabbix-agent服務 1.4、在zabbix-server服務端測試數據 1…

haproxy七層均衡

一.haproxy的安裝和服務信息1.1實驗環境ip實驗設備172.25.254.100haproxy172.25.254.10RS1172.25.254.20RS2172.25.254.111client1.2軟件安裝及配置haproxy主機上配置#下載#進入此文件進行編輯#關閉防火墻RS1主機上配置#下載#生成默認文件#重啟#關閉防火墻RS2主機上配置#下載#生…

分類預測 | MATLAB實現CPO-SVM冠豪豬算法優化支持向量機分類預測

分類預測 | MATLAB實現CPO-SVM冠豪豬算法優化支持向量機分類預測 目錄 分類預測 | MATLAB實現CPO-SVM冠豪豬算法優化支持向量機分類預測 分類效果 基本介紹 算法步驟 參數設定 運行環境 應用場景 程序設計 參考資料 分類效果 基本介紹 該MATLAB代碼實現了基于冠豪豬優化算法(…

【MySQL 數據庫】MySQL基本查詢(第二節)

文章目錄&#x1f4dd;Update&#x1f309; 將孫悟空同學的數學成績變更為 80 分&#x1f309; 將曹孟德同學的數學成績變更為60分&#xff0c;語文成績變更為70分&#x1f309; 將總成績倒數前三的3位同學的數學成績加上30分&#x1f309;將所有同學的語文成績更新為原來的2倍…

Axios 響應攔截器

1.定義&#xff1a;響應攔截器&#xff08;Response Interceptor&#xff09;是一個可以在 axios 接收到服務器響應后&#xff0c;響應數據交給 .then() 處理之前執行的函數。你可以用它來統一處理響應數據&#xff0c;進行錯誤處理&#xff0c;或者對返回的數據做格式化和轉換…

k8s的nodeport和ingress

1.流量轉發圖targerport轉發到實際的容器端口containerPort&#xff08;后端端口&#xff09;nodeportingress2.配置場景總結字段作用對象必填示例值何時配置containerPort容器否80需明確記錄容器端口時&#xff08;推薦&#xff09;targetPortPod是80定義 Service 轉發規則時p…

VLA:自動駕駛的“新大腦”?

&#x1f525; 什么是 VLA&#xff1f;為什么突然火了&#xff1f;在自動駕駛圈子里&#xff0c;最近一個詞特別火&#xff1a;VLA。它不是某個新車的型號&#xff0c;也不是某家公司的新品牌&#xff0c;而是一種全新的智能架構&#xff0c;被稱為“自動駕駛的大腦2.0”。&…