Windows下Agent開發簡介
Windows下AGENT開發
1. 新增mib樹
1. 在windows下安裝net-snmp。
2.將Mib Builder生成的HIKVISION-MIB.my檔案重新命名為txt檔案,拷貝到net-snmp安裝目錄/share/mibs目錄下。
3.編輯/usr/local/share/snmp/snmp.conf,
加入一行:
mibs+HIKVISION-MIB
4.使用snmptranslate -IR -Tp hikvision,
檢查是否能正確生成MIB樹。
2.根據mib生成程式碼檔案
進入netsnmp原始碼的agent/mibgroup/目錄,建立目錄hikvision,在目錄下執行:
>setMIBFILES=C:\usr\share\snmp\mibs\HIKVISION-MIB.txt
>mib2c -c mib2c.scalar.conf hikHardwareThreshold
生成檔案hikHardwareThreshold.h和hikHardwareThreshold.c
或者mib2c -c mib2c. iterate.conf hikServiceTable
生成檔案hikServiceTable.h和hikServiceTable.c
注:“mib2c -c mib2c.scalar.conf OID名”生成對應的程式碼檔案,OID可以是一張表,也可以是一個葉子節點。MIB模組一般都由變數和表組成。因此Net-snmp把SMI中的物件分為兩大類:scalar和table。Scalar就包含我們常用的整型,字串,時間等等資料型別。table就是scalar的一種集合,有一個和多個列組成,類似於資料庫中的表。它必須具有索引項,用來按一定順序檢索表項。對於表,一般用模板” mib2c -c mib2c. iterate.conf”來生成相應的程式碼檔案。
3.Agent擴充套件
1.開啟net-snmp工程,將上一步中生成的檔案加入到工程中。如圖所示:
2. 修改新增的檔案,在形如
int handle_hikCpuWarnVal(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests)
的函式中加入GET或SET操作實現的程式碼。
3. 在檔案 net-snmp原始碼目錄\win32\ mib_module_includes.h 中新增
#include "mibgroup/hikvision/hikHardwareThreshold.h"
4. 在檔案 net-snmp原始碼目錄\win32\ mib_module_inits.h 中新增
if (should_init("hikHardwareThreshold")) init_hikHardwareThreshold();
5. 重新編譯netsnmpmibs庫和snmpd,然後重新執行 net-snmp原始碼目錄\win32\ 目錄下的install-net-snmp.bat檔案。
6. >snmpget –v 2c –c public127.0.0.1 [新新增的OID] 測試是否新增成功。
在net-snmp原始碼檔案中新增獲取相應OID值的原始碼。