SNMPOCXマニュアル


は じ め に

商品に含まれるもの

  1. C-ROM
  2. 使用許諾契約書

動作環境について

■対応OS

SNMPOCXは、以下に示すOSで動作確認を行っております。

Microsoft Windows 95、Microsoft Windows 98、
Microsoft WindowsNT 4.0、Microsoft Windows 2000
Microsoft Windows XP、Microsoft Windows 2003

■開発に必要な環境

SNMPOCXをご使用いただくには、以下のいずれかのソフトウェアが必要です。

Microsoft Visual Basic Ver 5.0
Microsoft Visual Basic Ver 6.0
Microsoft Office 2000 (Access、Excel)

尚、SNMPOCXを動作させるには以下の環境が必要ですが、
開発環境ではインストールの際に自動的に組み込まれます。

VB5ランタイムDLL(SP3以上)
MFC42ランタイムDLL
UDPOCX 1.07
INT64DLL 1.01

SNMPOCXは、Microsoft Visual Basic Ver 5.0で作成しています。サンプルは、Microsoft Visual Basic Ver 5.0で作成しています。
※ 本製品は日本語環境のみの対応となります。

 


インストール

1. 製品のCD-ROMに含まれているセットアップキット(Willware.exe)をダブルクリックします。

2. 画面にしたがって、インストールを進めて下さい。

(1) インストールを始めます。「次へ」をクリックして下さい。

(2) 使用許諾契約書です。
内容に同意される場合は「次へ」をクリックして下さい。

(3) インストール先のフォルダを指定します。
初期設定でよろしければ「次へ」をクリックして下さい。
別のフォルダを指定したい場合は「参照」をクリックし、フォルダを指定して下さい。

(4) インストール中に置換されるファイルのバックアップを作成できます。
そのバックアップファイルの保存先フォルダを指定します。
初期設定でよろしければ「次へ」をクリックして下さい。

(5) WILLWAREComponentsを登録するスタートメニュー又は
プログラムマネージャのグループフォルダを指定します。
初期設定では、新規に「WILLWARE Components」の名前でフォルダを作成します。
特に指定する必要がなければ、初期設定をお勧めします。

(6) プログラムのコピーを開始します。「次へ」をクリックして下さい。

(7) プログラムのコピーをしています。
中断する場合は、「キャンセル」をクリックして下さい。

(8) インストールが完了しました。
「完了」をクリックし、インストールを終了して下さい。


ライセンスの登録

■レジストリファイルから登録する

ライセンスを登録します。
製品に含まれているフロッピーディスクのレジストリファイル(EPXXXXXXXXX.reg)をダブルクリックして下さい。
(「XXXXXXXXX」は、任意の数字がファイル名として付けられています。)

以下のメッセージボックスが表示され、ライセンスがレジストリに登録されます。

■手動で登録する

あらかじめ電子メールで通知しているライセンス情報を利用してライセンスを登録する等、レジストリファイルを利用しない場合は、VisualBasic起動後に新規プロジェクトを選択し以下のデザイン画面を開きます。

ツールバーの「プロジェクト」から、「コンポーネント」を選択し、「コンポーネント」画面を開きます。次にコントロールタブの一覧から「WILL SNMP Send OCX」及び「WILL SNMP Trap OCX」を選択して「OK」をクリックすると、それぞれのアイコンがツールボックスに追加されます。

ツールボックスに追加されたOCXを選択し、フォームにアイコンを貼り付け、プロパティの「(バージョン情報)」をクリックすると、以下の「WILL LICENSE REGISTRATION」画面が表示されます。ここで、ユーザー名、シリアル番号、キーコードをそれぞれ入力してライセンスの登録を行います。

■トライアルライセンスから正規ライセンスへの移行

既にトライアルライセンスが登録されている場合には、デザイン画面にあるOCXのプロパティで「(バージョン情報)」をクリックして下さい。

「WILL LICENSE REGISTRATION」画面が表示されますので、ここで正規ライセンスを入力して下さい。

■ライセンス入力時のご注意

※ライセンスが入力できない!?
入力したライセンスにスペースが含まれていないか確認して下さい。(ライセンスに、スペースは使用していません。)

※登録したライセンスを認識しない!?

ライセンスを登録しても、オブジェクトが新規ライセンスを認識していない場合は、SNMPOCXのアイコンを少し動かして下さい。この作業により、オブジェクトにライセンスが記憶されます。

※トライアルライセンスで作成したアプリケーションはどうする!?

既にトライアルライセンスで作成したアプリケーションは、正規ライセンスを登録した後、再コンパイルする必要があります。

 


サンプルを見る

インストールが完了すると、スタートメニューに「WILLWARE Components」が追加されます。

「WILLWARE Components」の「サンプル」を起動すると「WILLWARE Components サンプル」画面が表示されます。サンプルの起動、またはそれぞれのソースを開くことができます。但し、ソースを開くにはライセンスが必要です。トライアルライセンス又は、正規ライセンスを登録してご利用下さい。(ライセンスの登録方法は前項の「ライセンスの登録」をご覧下さい。)


サポートについて(無償)

サポートは基本的に電子メールで受け付けております。
サポートは無償でご利用いただけます。

■お問い合わせの前に

サポート作業を円滑に行うために、お問い合わせの際には以下の情報をご用意下さい。
    1. 製品名及びバージョン
    2. 開発環境(OSの種類及びバージョン、サービスパッケージの種類)
    3. 開発ツール及びバージョン
    4. サーバーの種類
    5. 問題点

■FAQ

弊社ホームページの「サポート」のページで、キーワードを入力してFAQを検索できます。休業日などサポートの対応が遅れる場合もありますので、まずはこちらをご確認下さい。

■お問合せ先

info@will-ltd.co.jp


バージョンアップについて(無償)

製品のバージョンアップは、すべて無償です。

■バージョンアップ情報の入手方法

バーションアップの情報は、弊社ホームページの新着情報で通知し、各商品のページの更新履歴で更新内容を掲示致します。

■最新バージョンの入手方法

最新バージョンのプログラムは、弊社ホームページ(http://www.will-ltd.co.jp/)のダウンロードのページよりダウンロードすることが出来ます。ダウンロードするファイルは、以下のバージョンアップの目的により異なりますのでご注意下さい。

  • WILLWARE Components(全製品用)セットアップキットを利用してバージョンアップ

    ファイル名:「Willware.exe」

    WILLWARE Components(全製品用)セットアップキットは全ての製品をインストールするためのものです。そのため本製品以外の製品及びサンプル、マニュアルも同時にバージョンアップされます。
  • 各コンポーネント毎のセットアップキットを利用してバージョンアップ

    ファイル名:「○○○ocx.exe」

    各コンポーネントのファイル(ocx、dll)及び、依存ファイルのみバージョンアップされます。サンプル及びマニュアルはバージョンアップされませんのでご注意下さい。

■バージョンアップをする前に

各セットアップキットを利用してバーションアップをする前に、以下のことにご注意下さい。

  • WILLWARE Components(全製品用)セットアップキットを利用してバージョンアップする場合は、古いバージョンをアンインストールしてから、最新バージョンをインストールすることをお勧めいたします。

    ※アンインストールの方法は、スタートメニューから「設定」→「コントロールパネル」→「アプリケーションの追加と削除」の画面で、「WILLWARE Components」を選択し、画面の指示に従って行って下さい。

  • 各コンポーネント毎のセットアップキットを利用してバージョンアップする場合は、最新バージョンをそのままインストールして下さい。古いファイルは上書きされます。


    ※弊社製品を複数ご利用いただいている場合、いずれか1つをバーションアップしても他の製品に影響はありません。

■バージョンアップの方法

セットアップキットをダブルクリックし、画面の指示に従ってインストールを進めて下さい。

 


Ver 1.XX からの移行について

SNMPOCXを大幅に変更しVer 2.00にバージョンアップいたしました。

主な変更点は、

です。

尚、バージョンアップではありますが、従来のコントロールとはバイナリ互換がありませんので、別コントロールとしてご提供します。
従来のソースコードから移行される場合は、下記の注意すべきメソッドとイベントを参考にして、ソースコードの変更をお願いします。

■コントロールの対応

(従 来) (Ver 2.00)
SNMP.OCX SNMPSEND.OCX (SNMP SendOCX 2.00)
SENDTRAP.OCX SNMPSEND.OCXに統合
------- <新規>SNMPTRAP.OCX (SNMP TrapOCX 2.00)

■メソッドの名称の変更

(従 来) (Ver 2.00)
GetSNMPStringメソッド SNMPStringValueメソッド
GetSNMPIntegerメソッド SNMPIntegerValueメソッド
GetSNMPCounterメソッド SNMPCounterValueメソッド

■メソッドの名称及び引数の変更

(従 来)

(Ver 2.00)

GetRequestメソッド SendGetRequestメソッド
GetNextRequestメソッド SendGetNextRequestメソッド
SetRequestメソッド SendSetRequestメソッド

■イベントの引数の変更

Responseイベント

 


再配布について

■作成したアプリケーションの配布時

SNMPOCXを利用して作成したアプリケーションの配布時のランタイムライセンスはフリーです。但し、開発ライセンスの配布はできません。

■再配布時に必要な配布可能ファイル

SNMPOCXを利用して作成したアプリケーションを配布する場合には、以下のファイルを添付する必要があります。( )内は推奨バージョンです。
SNMPSEND.OCX(2.00)
SNMPTRAP.OCX(2.00)
UDP.OCX(1.07)
INT64.DLL(1.01)
VB5JP.DLL (Ver 5.0.4319)
MSVBVM50.DLL (Ver 5.2.8244)
MFC42.DLL (Ver 4.21.7022)
MFC42LOC.DLL (Ver 4.21.7022)
MSVCRT.DLL (Ver 5.00.7022)
OLEPRO32.DLL (Ver 5.0.4118)
OLEAUT32.DLL (Ver 2.20.4118)
※セットアップウィザードを使用する場合
SNMPOCXをインストールすると、自動的にOCXの依存ファイルが以下のディレクトリにインストールされます。

C:\Windows\system(Windows 95, 98の場合)
C:\WINNT\system32(Windows NT, 2000, 2003の場合)
C:\Windows\system32(Windows XP の場合)

セットアップウィザードを実行すると自動的にアプリケーション配布時に必要なOCX(内部で利用しているOCX)と、DLLファイルがSetup.lstファイルに追加されます。

■著作権

  • SNMPOCXおよびこれに付随するマニュアルの著作権は株式会社ウィル(横浜市保土ヶ谷区)にあります。
  • 本ソフトウエアおよびマニュアルを運用した結果については、当社は一切責任を負いません。
  • 本ソフトウエアの仕様またはマニュアルに記載されている事項は予告無く変更することがあります。
  • マニュアルなどに記載されている会社名、製品名は、各社の商標および登録商標です。
  • SNMPOCXを利用するアプリケーションはSNMPOCXの著作権表示を行わなければなりません。CopyrightプロパティにSNMPOCXの著作権を示す文字列があります。アプリケーションまたはドキュメントのいずれかにこの文字列を表示して、SNMPOCXを使用していることを示してください。

 


製 品 概 要

SNMPOCXは、SNMP V1プロトコルをサポートするActiveXコンポーネント群です。
SNMPエージェント内にあるMIBT及びMIBU或いは、プライベートMIBの値を表示・変更することができます。
SNMPOCXは2つのコンポーネントSNMPSENDコントロールおよびSNMPTRAPコントロールで構成されます。
これら2つの総称をSNMPOCXと呼びます。

SNMPSENDコントロールは、SNMPマネージャーを作成するためのコンポーネントで、
GetRequest、GetNextRequest、SetRequest、GetResponseの4つのSNMP PDU(Protocol Data Unit)をサポートします。
1度に複数のMIB(Management Infomation Base)(管理情報ベース)オブジェクトを取り扱うことができます。
さらに、TRAP PDUの送信を行うことができます。
SNMPTRAPコントロールは、Trap PDUの受信をサポートするコンポーネントです。
詳しくはそれぞれのマニュアルをご参照ください。

 

SNMPSENDコントロール  

SNMPはさまざまなネットワーク機器でサポートされるプロトコルです。
SNMPを利用すればネットワーク機器の状態監視を簡単に行なえます。
高機能なネットワーク機器は、機能変更をSNMPを利用して行なうことができます。
SNMPをサポートするネットワーク機器をSNMPエージェントと呼びます。
SNMPSENDコントロールは、VisualBasicなどActive X Controlを利用できる環境において
SNMPエージェントから情報を収集またはSNMPエージェントのコントロールを行なうことを可能とするものです。
SNMPSENDコントロールのサンプルを試してみてください。
ネットワーク機器の状態が簡単に入手できることに気がつくことでしょう。

 

SNMPTRAPコントロール  

SNMPTRAPコントロールは、VisualBasicなどActive X Controlを利用できる環境から、
SNMP TRAP PDUを受信することを可能にするものです。
TRAPは、エージェントからマネージャへのイベント通知です。
イベントには、エージェントの開始、通信リンク障害、認証エラー、ノードダウン等の既定のイベントの他、ユーザー定義イベントがあります。

 


SNMPSENDコントロール

プログラミング概要

SNMPSENDコントロールの使い方は簡単です。
SNMPエージェントから情報を収集するためには、

SendGetRequestメソッド
SendGetNextRequestメソッド

の2つのメソッドを利用します。

収集したい情報にはIDがついています。
これをオブジェクト識別子(OID)と呼びます。
OIDがわかっている場合は、SendGetRequestメソッドを使います。

OIDがわからない場合は、SendGetNextRequestを使って代表的なOID "1.3.6"の次に存在するOIDを得ます。
SendGetNextRequestを繰り返し使うことでSNMPエージェントに存在するすべてのOIDを取得することができます。
(一部のエージェントはこのような使い方を禁止している場合があります)

SNMPエージェントに値を設定するには、

SendSetRequestメソッド

を使います。

たとえば、

iso.org.dod.internet.mgmt.mib.system.sysContact.0

iso.org.dod.internet.mgmt.mib.interfaces.ifTable.ifEntry.ifAdminStatus.1

を検索してみてください。これらの値は変更可能かもしれません。
他のSNMPマネージャーに通知を行うにはSendTrapメソッドを使います。
SNMPSENDコントロールは、オブジェクト名をサポートするいくつかのメソッドがあります。
OIDをオジェクト名で表現するとかなりわかりやすくなります。

OIDをオブジェクト名で表現するには、

OID2Nameメソッド

を使います。

オブジェクト名にどのようなものがあるのか検索するには、

FindNameメソッド

を使います。このメソッドにたとえば、"sys"という文字列を与えるとsysを含むオブジェクト名のリストをCollectionにしてくれます。

OIDとオブジェクト名の関係は、

ClearOIDメソッド
SetOIDメソッド

で変更できます。これにより新規のOIDに名前をつけることができます。

 

■用  語

 


▼プロパティ

Statプロパティ

■機 能

SNMPSENDコントロールの状態を示します。

■構 文

Object.Stat
Statプロパティの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。

■データ型

整数(Integer)。

■戻り値

(定 数) (説 明)
0 初期状態。送受信不可です。
1 送信可能状態です。
2 送信中です。送信不可です。

■解 説

1つのサブルーチンから連続して送信を行なう場合、Statプロパティを監視して送信を行ないます。

■Statの使用例

WaitReady()
  Do While Snmp1.Stat <> 1
    DoEvents
  Loop
End Sub
SendMult()
  WaitReady
  Request1
  WaitReady
  Request2
  WaitReady
  Request3
  WaitReady
End Sub

 

AgentAddressプロパティ

■機 能

TRAPデータに格納するエージェントアドレスを指定します。デフォルトは「""」です。
「""」の場合は、データが送信されるときに利用されたネットワークカードに設定されているIPアドレスです。
このプロパティは、SendTrapメソッド内で参照します。

■構 文

Object.AgentAddress[=Address]
AgentAddressプロパティの構文の指定項目は次の通りです
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
Address ドット付10進数です。例:"192.173.56.2"。

■データ型

文字列(String)。

■設定値

設定した値です。

■解 説

TRAPの原因となった機器のIPアドレスがわかる場合にのみ指定します。
「""」を指定すればPCのIPアドレスが設定されます。ホスト名を指定することはできません。

 

TickCountプロパティ

■機 能

TRAPデータに格納するTickCount(1/100秒)を指定します。
デフォルトは「-1」です。「-1」の場合は、データが送信されるときにPCの起動開始時からの経過時間を設定します。
このプロパティは、SendTrapメソッド内で参照します。

■構 文

Object.TickCount [=Count]
TickCountプロパティの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
Count 経過時間(1/100秒単位)です。

■データ型

長整数(Long)。

■設定値

設定した値です。

■解 説

TRAPの原因となった機器のTickCountがわかる場合にのみ利用します。
「-1」を指定すればPCの経過時間が設定されます。

 

StringTypeプロパティ

■機 能

受信したOctedStringの取り扱いを指示します。

■構 文

Object.StringType [=Value]
StringTypeプロパティの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
Value 文字列をUnicodeに変換するかどうかを指示する値です。

■データ型

長整数(Long)。

■設定値

Valueの設定値は次の通りです。
(定 数) (説 明)
0 初期状態。Unicodeに変換します。
1 Unicodeに変換しません。

 


▼メソッド

Err2Strメソッド

■機 能

ErrorStatus変数に対するエラーメッセージを取得します。

■構 文

Object.Err2Str(ErrorStatus As Integer)
Err2Strメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
ErrorStatus エラーメッセージを示す整数です。

■戻り値

文字列(String)。

■引数

ErrorStatus(引数) (戻 値)
-1 "FormatError"
0 "NoError"
1 "TooBig"
2 "NoSuchName"
3 "BadValue"
4 "ReadOnly"
5 "GenError"
Else "UnknownError"

 

ClearOIDメソッド

■機 能

SNMPSENDコントロールが内部に持っているOIDとオブジェクト名リストをクリアします。

■構 文

Object.ClearOID()
ClearOIDメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。

■戻り値

なし

 

SetOIDメソッド

■機 能

SNMPSENDコントロールが内部に持っているOIDとOIDに対応する名前リストにデータを追加します。

■構 文

Object.SetOID(OID As String, Name As String)
SetOIDメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
OID オブジェクト識別子です。
Name オブジェクト名です。

■戻り値

なし

■解 説

ここで設定した値は、OID2Nameやname2OID、FindName各メソッドで利用されます。OIDを独自表記したい場合は、ClearOIDをした後、SetOIDを行なってください。

 

OID2Nameメソッド

■機 能

OIDからOIDに対応するオブジェクト名に変換します。

■構 文

Object.OID2Name(OID As String)
OID2Nameメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
OID オブジェクト識別子です。

■戻り値

文字列(String)。

■解 説

OIDの一部または全部をオブジェクト名に変換します。

たとえば、"1.3.6.1.2.1.1.2.0"であれば、内部に、

"1.3.6.1.2.1.1.2"は"iso.org.dod.internet.mgmt.mib.system.sysObjectID"

であるという表がある場合には、

"iso.org.dod.internet.mgmt.mib.system.sysObjectID.0"

のように変換されます。

この表は、SetOIDで変更可能です。

 

Name2OIDメソッド

■機 能

OIDに対応するオブジェクト名をOIDに変換します。

■構 文

Object.Name2OID (Name As String)
Name2OIDメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
Name オブジェクト名です。

■戻り値

文字列(String)。

■解 説

オブジェクト名をOIDに変換します。
オブジェクト名とOIDの対応が表に存在しなければなりません。

 

FindNameメソッド

■機 能

オブジェクト名を検索します。

■構 文

Object.FineName (Name As String, [Compere As Integer = 0])
FindNameメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
Name オブジェクト名の一部です。
Compere 0 = バイナリ比較です。
1 = テキスト比較です(大文字と小文字を区別しない)。

■戻り値

コレクション(Collection)。

■解 説

指定したオブジェクト名の一部が一致するオブジェクト名一覧をCollectionとして戻します。これを利用するとオブジェクト名の一部がわかっている場合に正式名称を得ることができます。

 

Name2TypeIDメソッド

■機 能

OIDに対応するオブジェクト名をOIDに変換します。

■構 文

Object.Name2TypeID(Name As String)
Name2TypeIDメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
Name オブジェクト名です。

■戻り値

整数(Integer)。

■引数

Name(引数) (戻 値)
"Integer" 2
"OctetString" 4
"Null" 5
"ObjectID" 6
"Sequence" &H30
"IpAddress" &H40
"Counter" &H41
"Gauge" &H42
"Timeticks" &H43
"Opaque" &H44
"GetRequest" &HA0
"GetNextRequest" &HA1
"GetResponse" &HA2
"SetRequest" &HA3
"Trap" &HA4
Else -1

 

SNMPNullValueメソッド

■機 能

NULL値を持つオブジェクトIDを示すデータを生成します。

■構 文

Object.SNMPNullValue(ObjectId As String)
SNMPNullValueメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
ObjectId オブジェクトIDです。例:"1.3.6.1.4.1.5000.1"。

■戻り値

文字列(String)。

■解 説

SendGetRequestや、SendGetNextRequest、SendSetRequest、SendTrapの各メソッドのオブジェクトバリュー引数を、このメソッドを用いて作成します。
生成されたデータは文字列型ですが、実態はバイナリですので、そのまま表示することはできません。

 

SNMPCounterValueメソッド

■機 能

符号なし整数型のオブジェクトIDとその値を示すデータを生成します。

■構 文

Object.SNMPCounterValue(ObjectId As String, Value As String)
SNMPCounterValueメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
ObjectId オブジェクトIDです。例:"1.3.6.1.4.1.5000.1"。
Value 整数です。例:"12345"。

■戻り値

文字列(String)。

■解 説

ObjectValueには、32ビットまでの整数値を示す文字列を設定できます。
SendGetRequest、SendGetNextRequest、SendSetRequest、SendTrapの各メソッドのオブジェクトバリュー引数を、このメソッドを用いて作成します。
生成されたデータは文字列型ですが、実態はバイナリですので、そのまま表示することはできません。

 

SNMPIntegerValueメソッド

■機 能

文字列型のオブジェクトIDとその値を示すデータを生成します。

■構 文

Object.SNMPIntegerValue(ObjectId As String, Value As String)
SNMPIntegerValueメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
ObjectId オブジェクトIDです。例:"1.3.6.1.4.1.5000.1"。
Value 整数です。例:"12345"。

■戻り値

文字列(String)。

■解 説

ObjectValueには、32ビットまでの整数値を示す文字列を設定できます。
SendGetRequest、SendGetNextRequest、SendSetRequest、SendTrapの各メソッドのオブジェクトバリュー引数を、このメソッドを用いて作成します。
生成されたデータは文字列型ですが、実態はバイナリですので、そのまま表示することはできません。

 

SNMPStringValueメソッド

■機 能

文字列型のオブジェクトIDとその値を示すデータを生成します。

■構 文

Object.SNMPStringValue(ObjectId As String, Value As String)
SNMPStringValueメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
ObjectId オブジェクトIDです。例:"1.3.6.1.4.1.5000.1"。
Value 文字列です。例:"sample"。

■戻り値

文字列(String)。

■解 説

SendGetRequest、SendGetNextRequest、SendSetRequest、SendTrapの各メソッドのオブジェクトバリュー引数を、このメソッドを用いて作成します。
生成されたデータは文字列型ですが、実態はバイナリですので、そのまま表示することはできません。

 

SNMPIpAddValueメソッド

■機 能

IPアドレス型のオブジェクトIDとその値を示すデータを生成します。

■構 文

Object.SNMPIpAddValue(ObjectId As String, Value As String)
SNMPIpAddValueメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
ObjectId オブジェクトIDです。例:"1.3.6.1.4.1.5000.1"。
Value IPアドレスです。例:"192.58.6.4"。

■戻り値

文字列(String)。

■解 説

SendGetRequest、SendGetNextRequest、SendSetRequest、SendTrapの各メソッドのオブジェクトバリュー引数を、このメソッドを用いて作成します。
生成されたデータは文字列型ですが、実態はバイナリですので、そのまま表示することはできません。

 

SNMPGaugeValueメソッド

■機 能

Gauge型のオブジェクトIDとその値を示すデータを生成します。

■構 文

Object.SNMPGaugeValue(ObjectId As String, Value As String)
SNMPGaugeValueメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
ObjectId オブジェクトIDです。例:"1.3.6.1.4.1.5000.1"。
Value 整数です。

■戻り値

文字列(String)。

■解 説

SendGetRequest、SendGetNextRequest、SendSetRequest、SendTrapの各メソッドのオブジェクトバリュー引数を、このメソッドを用いて作成します。
生成されたデータは文字列型ですが、実態はバイナリですので、そのまま表示することはできません。

■参 考

Gauge型とは、上限が4、294、967、295である0またはそれ以上の整数です。

 

SNMPTimeTicksValueメソッド

■機 能

TimeTicks型のオブジェクトIDとその値を示すデータを生成します。

■構 文

Object.SNMPTimeTicksValue(ObjectId As String, Value As String)
SNMPTimeTicksValueメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
ObjectId オブジェクトIDです。例:"1.3.6.1.4.1.5000.1"。
Value 経過時間を示す整数です。

■戻り値

文字列(String)。

■解 説

SendGetRequest、SendGetNextRequest、SendSetRequest、SendTrapの各メソッドのオブジェクトバリュー引数を、このメソッドを用いて作成します。
生成されたデータは文字列型ですが、実態はバイナリですので、そのまま表示することはできません。

■参 考

TimeTicks型とは、1/100秒単位のある時刻からの経過時間です。

 

SNMPBinStringValueメソッド

■機 能

文字列型のオブジェクトIDとその値を示すデータを生成します。

■構 文

Object.SNMPBinStringValue(ObjectId As String, Value As String)
SNMPBinStringValueメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
ObjectId オブジェクトIDです。例:"1.3.6.1.4.1.5000.1"。
Value バイナリ文字列です。例:ChrB$(&HFF) & ChrB$(&HFE)

■戻り値

文字列(String)。

■解 説

SendGetRequest、SendGetNextRequest、SendSetRequest、SendTrapの各メソッドのオブジェクトバリュー引数を、このメソッドを用いて作成します。生成されたデータは文字列型ですが、実態はバイナリですので、そのまま表示することはできません。

 

SendGetRequestメソッド

■機 能

エージェントからのオブジェクトインスタンスの値を取得します。
Readyイベントが発生していることが必要です。
送信後は、再度Readyイベントの発生を待ってください。

■構 文

Object.SendGetRequest
(RemoteIP As String, RemotePort As String, Community As String,_
RequestId As Long, ObjectValue As String)
SendGetRequestメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
RemoteIP エージェントのIPアドレス。ホスト名でも結構です。
RemotePort エージェントのポート番号。ポート名でも結構です。
Community パスワードに相当します。
RequestId 任意の数字です。
ObjectValue オブジェクトバリューです。

■戻り値

なし

■解 説

GetRequest PDUメッセージを利用してエージェントにオブジェクトインスタンスの値の問い合わせを行ないます。エージェントがこのメッセージを受信したら、GetResponse PDUメッセージを利用して応答します。
応答が無い場合には、RemoteIP,RemotePort,Communityのいずれかが間違っている可能性があります。
また、RemoteIPやRemotePortに正しくない値をいれると例外が発生します。
Readyイベントが発生するか、Statプロパティが1であることを確認してから、このメソッドを発行してください。
オブジェクトバリューは、SNMPNullValueの戻り値を文字列として結合したものです。

 

SendGetNextRequestメソッド

■機 能

エージェントからオブジェクトインスタンスの値を取得します。
Readyイベントが発生していることが必要です。
送信後は、再度Readyイベントの発生を待ってください。

■構 文

Object.SendGetNextRequest
(RemoteIP As String, RemotePort As String, Community As String,_
RequestId As Long, ObjectValue As String)
SendGetNextRequestメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
RemoteIP エージェントのIPアドレス。ホスト名でも結構です。
RemotePort エージェントのポート番号。ポート名でも結構です。
Community パスワードに相当します。
RequestId 任意の数字です。
ObjectValue オブジェクトバリューです。

■戻り値

なし

■解 説

GetNextRequest PDUメッセージを利用してエージェントに指定したオブジェクトインスタンスのつぎのオブジェクトインスタンス値の問い合わせを行ないます。エージェントがこのメッセージを受信したら、GetResponse PDUメッセージを利用して応答します。
応答が無い場合には、RemoteIP,RemotePort,Communityのいずれかが間違っている可能性があります。
また、RemoteIPやRemotePortに正しくない値をいれると例外が発生します。
Readyイベントが発生するか、Statプロパティが1であることを確認してから、このメソッドを発行してください。
オブジェクトバリューは、SNMPNullValueの戻り値を文字列として結合したものです。

 

SendSetRequestメソッド

■機 能

エージェントのオブジェクトインスタンスに値を設定します。
Readyイベントが発生していることが必要です。
送信後は、再度Readyイベントの発生を待ってください。

■構 文

Object.SendSetRequest
(RemoteIP As String, RemotePort As String, Community As String,_
RequestId As Long, ObjectValue As String)
SendSetRequestメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
RemoteIP エージェントのIPアドレス。ホスト名でも結構です。
RemotePort エージェントのポート番号。ポート名でも結構です。
Community パスワードに相当します。
RequestId 任意の数字です。
ObjectValue 設定するオブジェクトバリューです。

■戻り値

なし

■解 説

SetRequest PDUメッセージを利用してエージェントの指定したオブジェクトインスタンスに値を設定します。エージェントがこのメッセージを受信したら、GetResponse PDUメッセージを利用して応答します。値を設定できないオブジェクトインスタンスの場合はNoSuchNameエラーが、正しくない値を設定しようとするとBadValueエラーがResponseイベントのErrorStatusに格納されます。応答が無い場合には、RemoteIP,RemotePort,Communityのいずれかが間違っている可能性があります。

また、RemoteIPやRemotePortに正しくない値をいれると例外が発生します。

Readyイベントが発生するか、Statプロパティが1であることを確認してから、このメソッドを発行してください。

オブジェクトバリューは、SNMPNullValue, SNMPCounterValue, SNMPIntegerValue, SNMPStringValue, SNMPIpAddrValue, SNMPGaulgeValue, SNMPTimeTicksValue の戻り値を文字列として結合したものです。

 

SendTrapメソッド

■機 能

TRAPデータを送信します。
Readyイベントが発生していることが必要です。
送信後は、再度Readyイベントの発生を待ってください。

■構 文

Object.SendTrap
(RemoteIP As String, RemotePort As String, Community As String,_
Enterprise As String, GenericTrapType As Integer,_
SpecificTrapType As String, [ObjectValue As String = " "] )
SendTrapメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
RemoteIP TRAPを受信するSNMPマネージャ(サーバ)です。
RemotePort TRAPを受信するSNMPマネージャのポート番号です。ポート名でも結構です。
Community コミュニティ名です。
Enterprise TRAPを発信する企業を示すObjectIDです。例:"1.3.6.1.4.1.5000"
GenericTrapType TRAPタイプです。
SpecificTrapType TRAP詳細タイプです。
ObjectValue トラップデータ(必要な場合のみ)です。

■戻り値

なし

■解 説

Enterpriseには、企業を示すオブジェクトIDを設定します。
GenericTrapTypeには、TRAPのタイプを指定します。
TRAPのタイプは7種類あります。

0 ColdStart
1 WarmStart
2 LinkDown
3 LinkUp
4 AuthenticationFailure
5 EgpNeighborLoss
6 EnterpriseSpecific

SpecificTrapTypeには、任意の整数を設定できます。
オブジェクトバリューは、SNMPNullValue, SNMPCounterValue, SNMPIntegerValue, SNMPStringValue, SNMPIpAddrValue, SNMPGaulgeValue, SNMPTimeTicksValue の戻り値を文字列として結合したものです。

 


▼イベント

Responseイベント

■機 能

エージェントから応答があった場合に発生します。

■構 文

Private Sub Object_Response
(ByVal RemoteIP As String, ByVal RemotePort As String,_
ByVal Version As Integer, ByVal Community As String,_
ByVal Command As String, ByVal RequestId As Long,_
ByVal ErrorStatus As Integer, ObjectCollection As Collection,_
ByVal RawData As String)
Responseイベントの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
RemoteIP エージェントのIPアドレスです。(ドット付き10進数)
RemotePort エージェントのポート番号です。(通常161)
Version 使用しているSNMPバージョン番号です。(0:Version1)。固定値。
Community コミュニティ名です。
Command 送信したPDUのタイプ(A2)です。
RequestId 指定したリクエストIDです。
ErrorStatus エラー番号。Err2Strメソッドを使って文字列にできます。
ObjectCollection Collection型のオブジェクトです。SNMPSendObjectクラスが格納されています。
RawData 受信した生データです(バイナリ)。

■解 説

RESPONSE PDUを受信したときに発生します。
ObjectCollectionは、SnmpSendObjectの集合です。
ObjectCollectionの内容を確認するには以下のようにコーディングします。

Dim v As SnmpSendObject
For Each v In ObjectCollection
  Debug.Print "Object ID=" & v.OIDName
  Debug.Print "Object TYPENAME=" & v.OIDTypeName
  Debug.Print "Object TYPE=" & v.OIDType
  Debug.Print "Object VALUE=" & v.OIDValue
Next

あるいは下記のようにコーディングします。

Dim i&
For i = 0 To ObjectCollection.Count - 1
  Debug.Print "Object ID=" & ObjectCollection (CStr(i)).OIDName
  Debug.Print "Object TYPENAME=" & ObjectCollection (CStr(i)).OIDTypeName
  Debug.Print "Object TYPE=" & ObjectCollection (CStr(i)).OIDType
  Debug.Print "Object VALUE=" & ObjectCollection (CStr(i)).OIDValue
Next

 

Readyイベント

■機 能

SendGetRequest、SendGetNextRequest、SendSetRequest、SendTrapを発行できる状態になったとき発生します。

■構 文

Private Sub Object_Ready()
Readyイベントの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。

■解 説

SendGetRequest、SendGetNextRequest、SendSetRequest、SendTrapを連続して発行することはできません。
上記いずれかのメソッドを発行する場合は、Readyイベントを待ってください。

■関連事項

Statプロパティ。

 

WsErrorイベント

■機 能

SNMPSENDコントロール内でWinsockエラーを検出した場合に発生します。

■構 文

Private Sub Object_WsError
(ByVal Ecode As Long, ByVal Description As String, ByVal Where As String)
WsErrorイベントの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPSENDコントロールオブジェクトです。
Ecode Winsockエラーコードです。
Description エラー番号に対応するエラーメッセージです。
Where エラー発生場所です。

■解 説

このイベントが発生するとエラーが発生する前に送信したSNMPメッセージに対する応答はすべて破棄されます。処理を再開するには、エラー後に発生するReadyイベントを待って再度SendGetRequest、SendGetNextRequest、SendSetRequest、SendTrapを発行してください。問題解析のためにこれらの情報を記録してください。

 


SNMPTRAPコントロール

プログラミング概要

SNMPTRAPコントロールはTRAP PDUを受信します。
受信を開始するために、StartTrapメソッドを使います。
受信を終了するには、StopTrapメソッドを使います。
TRAP PDUを受信すると、Trapイベントが発生します。
Trapイベントには、11のパラメータがあります。

RemoteIP$

Trapを発生したマシンのIPアドレス

RemotePort$ Trapを発生したマシンのポート番号
Version% SNMPのバージョン番号(0:Version1固定)
Community$ コミュニティ(パスワード)
Enterprise$ このTrapを定義した登録組織のオブジェクトID
AgentAddress$ トラップの送信元のIPアドレス
GenericTrapType% イベントの種類
SpecificType$ 特殊なトラップの場合の詳細な情報(整数)
TimeStamp$ 経過時間(1/100秒)
ObjectCollection As Collection オブジェクト名とその値と型の情報の集合
RawData$ 生データ(バイナリ文字列)

ObjectCollectionは、SnmpTrapObjectの集合です。

ObjectCollectionの内容を確認するには以下のようにコーディングします。

Dim v As SnmpTrapObject
For Each v In ObjectCollection
  Debug.Print "Object ID=" & v.OIDName
  Debug.Print "Object TYPENAME=" & v.OIDTypeName
  Debug.Print "Object TYPE=" & v.OIDType
  Debug.Print "Object VALUE=" & v.OIDValue
Next

あるいは下記のようにコーディングします。

Dim i&
For i = 0 To ObjectCollection.Count - 1
  Debug.Print "Object ID=" & ObjectCollection (CStr(i)).OIDName
  Debug.Print "Object TYPENAME=" & ObjectCollection (CStr(i)).OIDTypeName
  Debug.Print "Object TYPE=" & ObjectCollection (CStr(i)).OIDType
  Debug.Print "Object VALUE=" & ObjectCollection (CStr(i)).OIDValue
Next

 


▼プロパティ

Statプロパティ

■機 能

SNMPTRAPコントロールの状態を示します。

■構 文

Object.Stat
Statプロパティの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPTRAPコントロールオブジェクトです。

■データ型

整数(Integer)。

■戻り値

(定 数) (説 明)
-1 初期状態です。(受信不可)
0 受信開始待ちです。(受信不可)
1 受信待ちです。(受信可能)

■解 説

StartTrapを行うと、Statは1になります。
StopTrapを行うと、Statは-1になります。
Statが0から変化しない場合、Winsockに問題がある可能性があります。

 

StringTypeプロパティ

■機 能

受信したOctedStringの取り扱いを指示します。

■構 文

Object.StringType [=Value]
StringTypeプロパティの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPTRAPコントロールオブジェクトです。
Value 文字列をUnicodeに変換するかどうかを指示する値です。

■データ型

長整数(Long)。

■設定値

Valueの設定値は次の通りです。
(定 数) (説 明)
0 初期状態。Unicodeに変換します。
1 Unicodeに変換しません。

 


▼メソッド

StartTrapメソッド

■機 能

Trap受信を開始します。

■構 文

Object.StartTrap([Port As String = "162"])
StartTrapメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPTRAPコントロールオブジェクトです。
Port 受信ポートです。通常は162です。

■戻り値

なし

■解 説

StartTrapを行うとTRAP PDUの受信が可能になります。
すでにStartTrap済みである場合、何もしません。
同じPCで受信しているプログラムがあると、トラップ可能なエラーが発生します。(Err.Number=10048)

 

StopTrapメソッド

■機 能

Trap受信を終了します。

■構 文

Object.StopTrap()
StopTrapメソッドの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPTRAPコントロールオブジェクトです。

■戻り値

なし

■解 説

StopTrapを行うとTRAP PDUの受信を終了します。
受信を開始していない場合、何もしません。

 


▼イベント

Readyイベント

■機 能

Trap受信が可能になったときに発生します。

■構 文

Private Sub Object_Ready()
Readyイベントの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPTRAPコントロールオブジェクトです。

■解 説

StartTrapメソッドを実行した結果、受信可能状態になったことをプログラムに通知します。

 

Trapイベント

■機 能

TRAP PDUを受信したときに発生します。

■構 文

Private Sub Object_Trap
(ByVal RemoteIP As String, ByVal RemotePort As String,_
ByVal Version As Integer, ByVal Community As String,_
ByVal Enterprise As String, ByVal AgentAddress As String,_
ByVal GenericTrapType As Integer, ByVal SpecificType As String,_
ByVal TimeStamp As String, ObjectCollection As Collection, ByVal RawData As String)
Trapイベントの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPTRAPコントロールオブジェクトです。
RemoteIP TRAP PDUを送信したIPです。
RemotePort TRAP PDUを送信したポート番号です。
Version SNMPのバージョンです。(0:Version1固定)
Community コミュニティ名です。
Enterprise TRAPを定義した企業のオブジェクトIDです。
AgentAddress TRAPの原因となった機器のIPアドレスです。 (通常RemoteIPと一致)
GenericTrapType イベントの種類です。
SpecifiType 特殊なトラップの場合の詳細な情報です。(整数)
TimeStamp トラップ発生時間です。(1/100秒)
ObjectCollection オブジェクト名とその値と型の情報の集合です。
RawData 生データです。(バイナリ文字列)

■解 説

TRAP PDUを受信したとき、Trapイベントが発生します。
ObjectCollectionは、SnmpTrapObjectの集合です。
SnmpTrapObjectには、4つのメンバーがあります。

OIDName オブジェクトID
OIDTypeName オブジェクトの型を示す文字列
OIDType オブジェクトの型を示す整数
OIDValue オブジェクトの値(Variant)

オブジェクトの型を示す文字列と整数の関係は、以下のとおりです。

(整 数) (名 前)
2 Integer
4 OctetString
5 Null
6 ObjectID
&H40 IpAddress
&H41 Counter
&H42 Gauge
&H43 TimeTicks
&H44 Opaque
Else 数値そのまま

ObjectCollectionの内容を確認するには以下のようにコーディングします。

Dim v As SnmpTrapObject
  For Each v In ObjectCollection
  Debug.Print "Object ID=" & v.OIDName
  Debug.Print "Object TYPENAME=" & v.OIDTypeName
  Debug.Print "Object TYPE=" & v.OIDType
  Debug.Print "Object VALUE=" & v.OIDValue
Next

あるいは下記のようにコーディングします。

Dim i&
  For i = 0 To ObjectCollection.Count - 1
  Debug.Print "Object ID=" & ObjectCollection (CStr(i)).OIDName
  Debug.Print "Object TYPENAME=" & ObjectCollection (CStr(i)).OIDTypeName
  Debug.Print "Object TYPE=" & ObjectCollection (CStr(i)).OIDType
  Debug.Print "Object VALUE=" & ObjectCollection (CStr(i)).OIDValue

Next

 

WsErrorイベント

■機 能

SNMPTRAPコントロール内でWinsockエラーを検出した場合に発生します。

■構 文

Private Sub Object_WsError
(Ecode As Long, Description As String, Where As String)
WsErrorイベントの構文の指定項目は次の通りです。
(指定項目) (内 容)
Object SNMPTRAPコントロールオブジェクトです。
Ecode Winsockエラーコードです。
Description エラーの説明です。
Where エラー発生場所です。

■解 説

問題解決のため、これらの情報を記録してください。

 


サンプル

SNMP Managerサンプル

(SNMP MANAGER 2.01)

SNMP MANAGER 2.01は、SNMPOCXを用いたサンプルプログラムです。
以下の2つの機能があります。

  1. MIB表示・設定機能
    SNMPエージェントに存在するMIBの値を簡単に検索、設定。

  2. トラップの受信機能
    トラップの受信。

■ MIB表示・設定機能

SNMPエージェントに存在するMIBの値を簡単に検索し設定できます。
以下の手順に従ってサンプルをご使用ください。

1.SNMPエージェントに接続

  • SNMPエージェント
    SNMPエージェントのIPアドレス等を入力します。

  • コミュニティ
    SNMPエージェントに接続する時のパスワードを入力します。
    (通常は「public」です。)

2.オブジェクトの検索

  • 登録されているオブジェクトID
    検索したいオブジェクトを入力し「検索」ボタンを押します。
    「一覧」にオブジェクトの一覧が表示されます。
    (例 : SYS 等)

  • 検索されたオブジェクトID一覧
    検索されたオブジェクトのID一覧が表示されます。
    (検索項目に何も入力しない場合は、デフォルトで設定されている一般的なオブジェクトIDが表示されます。)

3.オブジェクト内容の表示・設定

  • オブジェクトID
    一覧表の中から、変更したいオブジェクトを選択し「GET」ボタンを押します。
    この時「GET ALL」ボタンを押すとSNMPエージェント内のMIBオブジェクトがすべて表示されます。
    選択されたオブジェクトが存在しない場合は、「Error Status=2(NoSuchName)」というメッセージが表示されます。
    オブジェクトIDの最後の数字が「0」の場合は、そのオブジェクトの中に、それ以上オブジェクトが含まれていないことを示します。
    また、「1」以上の場合は、さらにオブジェクトが含まれていることを示しています。
    この場合、「GET NEXT」ボタンで検索します。
    選択したオブジェクトは、すべて「オブジェクトID」リストの中に記録されます。
    記録を削除したい場合は、「リストクリア」ボタンを押します。

  • 設定する値の種類
    オブジェクトの内容の「Object Type」を参照し選択します。

  • 設定する値
    「Value」の内容を変更します。設定したい値を入力し「SET」ボタンを押します。

■トラップ受信機能

「トラップを受信する。」のチェックボックスにチェックをつけると、
SNMPエージェントからのTRAP PDUを受信できます。

 


SENDTRAPサンプル

SendTrapメソッド 2.00

SNMPマネージャーにTRAPを通知するサンプルです。
以下の手順に従って、ご利用ください。
※「SNMP MANAGER 2.01」と併せて利用できます。

■使用方法

1.TRAP種別の設定

2.通知データの設定

3.TRAP受信サーバーの設定

4.TRAPの通知
1〜3の各項目の設定が完了したら、「送信」ボタンをくリックして
SNMPマネージャーに通知データが送信されることを確認して下さい。


発行所
株式会社ウィル

©Copyright 1998-2001 WILL Corporation. All rights reserved