こいつの続き。
すでにCygwinではないことを先にわびさせてもらいます。
あと、AgentXも使用するの諦めました。snmpd本体に拡張MIBをリンクさせます。
ぶっちゃけ長いので続きに。
NET-SNMPについて、この間までのアプローチじゃどうしようもなかった。
どうにか、Windowsで独自MIBが動くところまでを手順化できたので保存。
やりたい事
- WindowsでNET-SNMPの独自MIBを動かす。
- 今回はCodezineのサンプルのMIBが動くのだけ確認。
制限事項
- 今回の手順ではmib2cは動かない。
- 前回の記事で書いたバイナリ版のNET-SNMPを使うか、自前のLinuxでNET-SNMPを構築して代用すること。
- mib2cで出力されたコードは互換っぽいので問題なし。
前提条件
- 特にディレクトリを指定しない場合、解凍したNET-SNMPのソースディレクトリをカレントとする。
- インストールするPathはデフォルトのc:\usrとする。変更する場合、win32\net-snmp\net-snmp-config.hとwin32\install-net-snmp.batを編集する。
準備として以下をダウンロードし、2バイトコードやスペースの無いPathに解凍しておく。
- NET-SNMPのソースコード
- Codezine記事「net-snmpについて(独自監視項目の追加) – 前編」サンプルファイル
下ごしらえ
- サンプルファイルの*.cと*.hをagent\mibgroupにコピー。
- サンプルファイルのmatsu_object.cのsprintf()のgetpid()はWindowsでは動かないので、適当に抜いておく。
- サンプルファイルのMIBファイルをmibsにコピー。
- win32\mib_module_includes.hの最後に#include “mibgroup/matsu_object.h”を追加。これはinit関数があるヘッダだけincludeしとけばよい。
- win32\mib_module_inits.hの最後if (should_init(“matsutest”)) init_matsutest();を追加。これはmib2cで出力したMIB名を書く。
ビルドとインストール(ほぼNET-SNMPドキュメント通りに実行。一部順序等を変更している。)
- win32\netsnmpmibs\netsnmpmibs.vcprojを開き、プロジェクトにagent\mibgroupのサンプルファイルのmatsu*.c matsu*.hを追加し、リリースビルド。
- ビルドエラーがでなければ問題なし、ソリューションを閉じる。
- win32\win32.dswを開き、プロジェクトファイルの変換を全てYes。
- リリースビルドに設定し、以下のプロジェクトを順にリビルド。
libagent
libhelpers
libnetsnmptrapd
snmplib
netsnmpmibs - メニューからビルド→バッチビルドを選択、上記のビルド済みプロジェクト以外のリリースビルドを選択し、リビルドボタンを押す。
- ビルドエラーがでなければ問題なし、プロジェクトを閉じる。
- コマンドラインからNET-SNMPのソースディレクトリをカレントディレクトリにしwin32\install-net-snmp.batを実行。
snmpdをWindowsサービスに追加/実行
- コマンドラインから↓を実行。
% snmpd -register - 管理→サービス→SNMP Serveiceを停止させ、手動実行に変更する。
- 管理→サービス→NET-SNMP Agentを自動実行にし、サービスを開始させる。
動作確認
- コマンドラインから↓を実行。無事取得できればOK。
snmpwalk -v 1 -c public localhost MATSU-TEST-MIB::matsutest
D:\net-snmp-5.5>snmpwalk -v 1 -c public localhost MATSU-TEST-MIB::matsutest
MATSU-TEST-MIB::mtuObject1.0 = STRING: matsutest1, timer:OFF:[0] trap:OFF call_count:[4]
MATSU-TEST-MIB::mtuObject2.0 = INTEGER: 4
MATSU-TEST-MIB::mtuTrap.0 = INTEGER: off(0)
MATSU-TEST-MIB::mtuTimer.0 = INTEGER: off(0)
Comments are closed here.