このオブジェクトは SNMP 要求をリモートデバイスに送信するために使用されます。

必ず [Initialize4] または [Initialize2] を呼び出してから他のメンバーを呼び出してください。

CoreAsp.SnmpRqst は三段階のプロセスを使用します。

  1. [Initialize4] または [Initialize2] を呼び出し、特定のデバイスに対してオブジェクトを初期化します。
  2. タイムアウトの値やポートなどのオプションのパラメータを設定します。
  3. デバイスに [Get][GetNext][GetMultiple] または [Set] などの操作を行います。これらの操作によって ComSnmpResponse オブジェクトが返されます。このオブジェクトには操作のステータスと値が含まれます (Failed/GetValue/GetOid を使用した場合、値は直接返され、GetPayload を使用した場合、SNMP 変数バインディングのリストが XML データとして返されます)。
重要: WhatsUp Gold 24.0.1 以降、SNMP API を使用しようとするユーザーは Initialize4 メソッドを使用する必要があります。

メソッド

説明

返す内容

Initialize4( sAddress, nSnmpVersion, sCommunity, sUsername, sContext, nAuthProto, sAuthPwd, nPrivProto, sPrivPwd)

指定したパラメータで指定されたデバイス ID を持つデバイスの SnmpRqst オブジェクトを初期化します。

  • sAddress。SNMP を接続するデバイスの IP アドレス。
  • nSnmpVersion。1, 2, 3.
  • sCommunity。v1 または v2 のプレーンテキストのコミュニティ名。
  • sUsername。SNMP v3 ユーザー名。
  • sContext。SNMP v3 コンテキスト。
  • nAuthProto。SNMP v3 認証プロトコル。
  • sAuthPwd。SNMP v3 認証パスワード。
  • nPrivProto。SNMP v3 プライバシープロトコル。
  • sPrivPwd。SNMP v3 プライバシーパスワード。

ComResult オブジェクト

Initialize2( sDeviceAddress, nCredentialID )

デバイスの IP アドレスおよび WhatsUp Gold に保存された認証情報を使用してデバイスへの接続を作成することで、SnmpRqst オブジェクトを初期化します。このメソッドを使用して、WhatsUp Gold で設定されていないデバイスの SnmpRqst を初期化できます。ただし、そのデバイスの認証情報が認証情報ライブラリで設定されていることが条件です。

  • sDeviceAddress。クエリ対象デバイスのアドレスまたはホスト名。
  • nCredentialID。WhatsUp Gold で設定された認証情報の認証情報 ID に対応する正の整数。

ComResult オブジェクト

SetTimeoutMs( nTimeoutInMilliSec)

タイムアウト値をミリ秒単位で設定します。指定されない場合、タイムアウト値はデフォルトで 2000 ミリ秒になります。

  • nTimeoutInMilliSec。未解決の要求を終了する必要があるミリ秒数を表す正の整数。
    注: このメソッドは、失敗したらある値を返し、その値を取得するためのオブジェクト変数を必要とします。例: varComResult = SnmpRqst.SetTimeoutMs(5000)。ただし、varComResultComResult オブジェクトです。

ComResult オブジェクト

SetNumRetries( nNumberRetries)

タイムアウトした要求を再試行する回数を設定します。指定されない場合、失敗した要求の再試行回数は 1 回です。

  • nNumberRetries。タイムアウトした要求を再試行する回数を表す正の整数。

1 要求当たり SNMP パケットを 1 つだけ送信するには、nNumberRetries0 (ゼロ) に設定します。

ComResult オブジェクト

SetPort( nPort)

SnmpRqst が使用する TCP/IP ポートを設定します。指定されない場合、ポート 161 が使用されます。

  • nPort。使用されるポートに対応する 1 ~ 65535 の正の整数。

ComResult オブジェクト

Get( sOid)

指定オブジェクトの値を取得する SNMP Get コマンドを発行します。

  • sOid。有効な OID を含む文字列。

ComSnmpResponse オブジェクト

GetNext( sOid)

辞書の順で指定オブジェクトの次に来るオブジェクトの値を取得する SNMP GetNext コマンドを発行します。

  • sOid。有効な OID を含む文字列。

ComSnmpResponse オブジェクト

GetMultiple( sListOfOids)

各指定オブジェクトの SNMP Get コマンドを発行します。GetMultiple では、すべてのコマンドを 1 つの SNMP プロトコルデータ単位に埋め込んで送信するので、複数の Get コマンドを個別に発行するより効率的です。

  • sListOfOids。有効な OID のコンマ区切りリスト。

ComSnmpResponse オブジェクト

Set( sOid, sType, sValue)

SNMP Set コマンドを発行し、デバイスに OID 値を設定します。

  • sOid。値を設定するオブジェクトの有効な OID を含む文字列。
  • sType。設定する値の種類に対応する単一文字列。

    i = 整数

    u = 符号なし整数

    s = 文字列

    x = 16 進数文字列

    d = 10 進数文字列

    n = NULL オブジェクト

    o = オブジェクト ID

    t = Timetick

    a = IPv4 アドレス

    b = ビット

  • sValue。設定する値を含む文字列。

ComSnmpResponse オブジェクト

注: デバイスの MIB オブジェクトとコミュニティ文字列が読み取りと書き込みアクセス権を取得するまで [関数の設定] は機能しません。

デバイスに関連付けられた SNMP 認証情報に基づいて Initialize4 パラメータを自動設定する関数の例を次に示します。

' *****************

' * ConnectSNMP *

' *****************

Sub ConnectSNMP()

Dim bCredential : bCredential = 0

'Get SNMP Credential Data

Dim sFirstCommunity : sFirstCommunity = Context.GetProperty("CredSnmpV1:ReadCommunity")

Dim sSecondCommunity : sSecondCommunity = Context.GetProperty("CredSnmpV2:ReadCommunity")

Dim sUsername : sUsername = Context.GetProperty("CredSnmpV3:Username")

Dim sContext : sContext = Context.GetProperty("CredSnmpV3:Context")

Dim sAuthPwd : sAuthPwd = Context.GetProperty("CredSnmpV3:AuthPassword")

Dim sPrivPwd : sPrivPwd = Context.GetProperty("CredSnmpV3:EncryptPassword")

Dim nAuthProto : nAuthProto = 0

Dim nPrivProto : nPrivProto = 0

'initialize snmp cred version

Dim nSnmpVersion : nSnmpVersion = 1

Dim sCommunity : sCommunity = sFirstCommunity

' determine snmp cred version

If Len(sFirstCommunity) = 0 Then

If Len(sSecondCommunity) > 0 Then

nSnmpVersion = 2

sCommunity = sSecondCommunity

Else

If Len(sUsername) > 0 Then

nSnmpVersion = 3

Else

Context.LogMessage "There are no SNMP credentials assigned to this device"

bCredential = 1

End If

End If

End If

If bCredential = 0 Then

Dim rc, sOID, sOIDCore, sOIDtoLoop, sInstance

'Initialize and Test SNMP Connection

Set rc = oSnmp.Initialize4(sAddress,nSnmpVersion,sCommunity,sUsername,sContext,nAuthProto,sAuthPwd,nPrivProto,sPrivPwd)

If rc.Failed Then

sErrorMsg = rc.GetErrorMsg

bSNMPResult = 1

bFail = 1

End If

End If

End Sub