Huawei.bmc.snmp.Rule.CollectTemperatureInlet

Huawei.RackServer.Huawei.bmc.snmp.Rule.CollectTemperatureInlet (Rule)

Collect Temperature Inlet

Element properties:

TargetHuawei.Bmc.Snmp.Target
CategoryPerformanceCollection
EnabledTrue
Alert GenerateFalse
RemotableTrue

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.TimedScript.PerformanceProvider Default
CollectToDB WriteAction Microsoft.SystemCenter.CollectPerformanceData Default

Source Code:

<Rule ID="Huawei.RackServer.Huawei.bmc.snmp.Rule.CollectTemperatureInlet" Target="Huawei.Bmc.Snmp.Target" Enabled="true" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>PerformanceCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.PerformanceProvider">
<IntervalSeconds>600</IntervalSeconds>
<SyncTime/>
<ScriptName>TemperatureInlet.vbs</ScriptName>
<Arguments>$Target/Property[Type="NetworkLibrary!System.NetworkManagement.Node"]/SNMPAddress$ $RunAs[Name="NetworkLibrary!System.NetworkManagement.Snmp.MonitoringAccount"]/CommunityString$ $Target/Property[Type="NetworkLibrary!System.NetworkManagement.Node"]/SNMPVersion$ $Target/Property[Type="NetworkLibrary!System.NetworkManagement.Node"]/PortNumber$</Arguments>
<ScriptBody><Script>
Option Explicit
On Error Resume Next

Dim oArgs
Dim exePath, snmpVer, arr, host, ws, debugFlag, port
Dim community,ipAddr,TemperatureOID,Temperature,TemperatureRaw,CurrentTime,sInstanceName,sCounterName,sObjectName
Set oArgs = WScript.Arguments
MOMDebugLog ( "SNMPAddress" &amp; oArgs(0))
MOMDebugLog ( "CommunityString" &amp; oArgs(1))
MOMDebugLog ( "version" &amp; oArgs(2))

ipAddr = oArgs(0)
community = oArgs(1)
snmpVer = oArgs(2)
port = oArgs(3)

TemperatureOID = "1.3.6.1.4.1.2011.2.235.1.1.26.50.1.3.1"
exePath = "C:\"&amp;"Program Files"&amp;"\Huawei\snmp\snmpget.exe"
IF snmpVer = "2" then
snmpVer = "2c"
END IF
debugFlag = 0
sObjectName = "TemperatureInlet"
sCounterName = "Inlet"
sInstanceName = "TemperatureInlet"

Set ws = CreateObject("WScript.Shell")
host = WScript.FullName

If LCase( right(host, len(host)-InStrRev(host,"\")) ) = "wscript.exe" Then
ws.run "cscript """ &amp; WScript.ScriptFullName &amp; chr(34), 0
WScript.Quit
End If

Dim oAPI, oBag
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Call oBag.AddValue("ObjectName",sObjectName)
Call oBag.AddValue("CounterName",sCounterName)
Call oBag.AddValue("InstanceName",sInstanceName)

TemperatureRaw = getOidResult(TemperatureOID)
IF TemperatureRaw = "" or isnumeric(TemperatureRaw)=false then
Temperature = 0
ELSE
Temperature = TemperatureRaw
Temperature = Temperature/10
Call oBag.AddValue("Value",Temperature)
Call oAPI.Return(oBag)
End IF

MOMDebugLog("ip:"&amp; ipAddr &amp;" TemperatureRaw:" &amp; "'" &amp; TemperatureRaw &amp; "'" &amp;" Temperature:" &amp; Temperature)


'*****************************************************************
' Function getOidResult
' query OID value through snmp interface.
'*****************************************************************
Public Function getOidResult (ByVal Oid)
Dim cmd, result, getResult, arr
cmd = exePath &amp; " -v " &amp; snmpVer &amp; " -c " &amp; community &amp; " -r 3 -t 20 -O vq " &amp; ipAddr &amp; ":" &amp; port &amp; " " &amp; Oid
Set getResult = ws.Exec(cmd)
result = getResult.StdOut.ReadAll
Set getResult = Nothing
IF len(result ) &gt; 1 Then
IF (Mid(result ,1,1)=chr(34) And Mid(result ,len(result )-1,1)=chr(34)) Then
result = Mid(result ,2,len(result)-3) &amp; chr(32)
End IF
End IF
getOidResult = result
End Function

'*****************************************************************
' Function MOMDebugLog
' Add LogMessage Header - ScriptName and Time and Logging it.
'*****************************************************************
Public Function MOMDebugLog (ByVal strMessage)
IF debugFlag = 1 then
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set fso=CreateObject("Scripting.FileSystemObject")
if fso.folderExists("C:\scomLog") then
Dim fso, f
Set f = fso.OpenTextFile("c:\scomLog\TemperatureIntlet.txt", ForAppending, True)
f.WriteLine strMessage
f.Close
End if
End if
End Function


</Script></ScriptBody>
<TimeoutSeconds>600</TimeoutSeconds>
<ObjectName>$Data/Property[@Name='ObjectName']$</ObjectName>
<CounterName>$Data/Property[@Name='CounterName']$</CounterName>
<InstanceName>$Data/Property[@Name='InstanceName']$</InstanceName>
<Value>$Data/Property[@Name='Value']$</Value>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="CollectToDB" TypeID="SC!Microsoft.SystemCenter.CollectPerformanceData"/>
</WriteActions>
</Rule>