此对象可将 SNMP 请求发送到远程设备。

在调用其他任何成员之前,必须先调用 Initialize4Initialize2

CoreAsp.SnmpRqst 使用的程序有三个步骤:

  1. 调用 Initialize4Initialize2,以针对特定设备初始化该对象。
  2. 设定选用参数,例如超时值、端口......等等。
  3. 对设备执行任何次数的 GetGetNextGetMultipleSet 操作。这些操作会直接返回含有操作状态与值的 ComSnmpResponse 对象 (使用 Failed/GetValue/GetOid),或以 XML 数据形式返回 SNMP 变量系结列表 (使用 GetPayload)。
重要: 自 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)

设定超时请求的重试次数。未指定时,失败的请求会重试一次。

  • nNumberRetries:正整数,代表超时请求的重试次数。

若要让每个请求只发送一个 SNMP 数据包,请将 nNumberRetries 设为 0 (零)。

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 以单一 SNMP 通讯协议数据单元发送所有命令,因此比分别发出多个 Get 命令更有效率。

  • sListOfOids:以逗号分隔的有效 OID 列表。

ComSnmpResponse 对象

Set( sOid, sType, sValue)

发出 SNMP Set 命令,在设备上设定 OID 值。

  • sOid:此字符串包含的有效对象 OID,属于您要为其设定数值的对象。
  • sType:单一字符,代表您要设定的数值类型。

    i = 整数

    u = 无符号整数

    s = 字符串

    x = 十六进制字符串

    d = 十进制字符串

    n = NULL 对象

    o = 对象标识符

    t = timetick

    a = IPv4 地址

    b = 位数

  • sValue:包含所要设置的字符串。

ComSnmpResponse 对象

注: 除非设备的 MIB 对象和群体字符串拥有读写权限,否则 Set 函数没有作用。

以下示例函数将根据与设备关联的 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 "未为此设备分配 SNMP 凭据"

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