CygwinでNET-SNMPの続きの続き

2010/01/22 | By KUMA | Filed in: 技術メモ.

こいつの続き。
すでに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に解凍しておく。

下ごしらえ

  • サンプルファイルの*.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ドキュメント通りに実行。一部順序等を変更している。)

  1. win32\netsnmpmibs\netsnmpmibs.vcprojを開き、プロジェクトにagent\mibgroupのサンプルファイルのmatsu*.c matsu*.hを追加し、リリースビルド。
  2. ビルドエラーがでなければ問題なし、ソリューションを閉じる。
  3. win32\win32.dswを開き、プロジェクトファイルの変換を全てYes。
  4. リリースビルドに設定し、以下のプロジェクトを順にリビルド。
    libagent
    libhelpers
    libnetsnmptrapd
    snmplib
    netsnmpmibs
  5. メニューからビルド→バッチビルドを選択、上記のビルド済みプロジェクト以外のリリースビルドを選択し、リビルドボタンを押す。
  6. ビルドエラーがでなければ問題なし、プロジェクトを閉じる。
  7. コマンドラインから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)


Tags: , ,

Comments are closed here.