Huawei.ISM.Management.Pack.huawei.DataSource.Discovery.Host.Properties (DataSourceModuleType)

Element properties:

TypeDataSourceModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
OutputTypeSystem.Discovery.Data

Member Modules:

ID Module Type TypeId RunAs 
snmpProbe DataSource System.NetworkManagement.SnmpDataSource Default
ScriptDiscovery ProbeAction Microsoft.Windows.ScriptDiscoveryProbe Default

Overrideable Parameters:

IDParameterTypeSelector
Intervalint$Config/Interval$
LogLevelint$Config/LogLevel$

Source Code:

<DataSourceModuleType ID="Huawei.ISM.Management.Pack.huawei.DataSource.Discovery.Host.Properties" Accessibility="Internal" Batching="false">
<Configuration>
<IncludeSchemaTypes>
<SchemaType>System!System.Discovery.MapperSchema</SchemaType>
<SchemaType>System!System.ExpressionEvaluatorSchema</SchemaType>
<SchemaType>System!System.ParamListSchema</SchemaType>
</IncludeSchemaTypes>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="Interval" type="xsd:integer"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="IPAddress" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="CommStr" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="Index" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="Version" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" minOccurs="1" name="LogLevel" type="xsd:integer"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="Interval" Selector="$Config/Interval$" ParameterType="int"/>
<OverrideableParameter ID="LogLevel" Selector="$Config/LogLevel$" ParameterType="int"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<DataSource ID="snmpProbe" TypeID="SNL!System.NetworkManagement.SnmpDataSource">
<Scheduler>
<SimpleReccuringSchedule>
<Interval>$Config/Interval$</Interval>
</SimpleReccuringSchedule>
<ExcludeDates/>
</Scheduler>
<SNMPv3UserName>$RunAs[Name="SNL!System.NetworkManagement.SnmpV3.MonitoringAccount"]/UserName$</SNMPv3UserName>
<SNMPv3AuthProtocol>$RunAs[Name="SNL!System.NetworkManagement.SnmpV3.MonitoringAccount"]/AuthenticationProtocol$</SNMPv3AuthProtocol>
<SNMPv3AuthPassword>$RunAs[Name="SNL!System.NetworkManagement.SnmpV3.MonitoringAccount"]/AuthenticationKey$</SNMPv3AuthPassword>
<SNMPv3PrivProtocol>$RunAs[Name="SNL!System.NetworkManagement.SnmpV3.MonitoringAccount"]/PrivacyProtocol$</SNMPv3PrivProtocol>
<SNMPv3PrivPassword>$RunAs[Name="SNL!System.NetworkManagement.SnmpV3.MonitoringAccount"]/PrivacyKey$</SNMPv3PrivPassword>
<SNMPv3ContextName>$RunAs[Name="SNL!System.NetworkManagement.SnmpV3.MonitoringAccount"]/ContextName$</SNMPv3ContextName>
<IP>$Config/IPAddress$</IP>
<CommunityString>$Config/CommStr$</CommunityString>
<Version>$Config/Version$</Version>
<SnmpVarBinds>
<SnmpVarBind>
<OID>.1.3.6.1.4.1.34774.4.1.23.4.5.1.1.$Config/Index$</OID>
<Syntax>0</Syntax>
<Value VariantType="8"/>
</SnmpVarBind>
<SnmpVarBind>
<OID>.1.3.6.1.4.1.34774.4.1.23.4.5.1.2.$Config/Index$</OID>
<Syntax>0</Syntax>
<Value VariantType="8"/>
</SnmpVarBind>
<SnmpVarBind>
<OID>.1.3.6.1.4.1.34774.4.1.23.4.5.1.6.$Config/Index$</OID>
<Syntax>0</Syntax>
<Value VariantType="8"/>
</SnmpVarBind>
<SnmpVarBind>
<OID>.1.3.6.1.4.1.34774.4.1.23.4.5.1.7.$Config/Index$</OID>
<Syntax>0</Syntax>
<Value VariantType="8"/>
</SnmpVarBind>
</SnmpVarBinds>
</DataSource>
<ProbeAction ID="ScriptDiscovery" TypeID="Windows!Microsoft.Windows.ScriptDiscoveryProbe">
<ScriptName>DiscoverHostProperites.vbs</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Target/Host/Property[Type="SNL!System.NetworkManagement.Node"]/DeviceKey$ "$Target/Host/Property[Type="SNL!System.NetworkManagement.Node"]/SNMPAddress$" "$Data/SnmpVarBinds/SnmpVarBind[1]/Value$" "$Data/SnmpVarBinds/SnmpVarBind[2]/Value$" "$Data/SnmpVarBinds/SnmpVarBind[3]/Value$" "$Data/SnmpVarBinds/SnmpVarBind[4]/Value$"</Arguments>
<ScriptBody><Script>

'**********************************************************************************
' Script Name - Huawei Host Properites Discovery
' Author: Muralidhar L, Vignesh Pandian
'
' Description:
' Discovery of Huawei Host and all it's attributes.
'
' (c) Copyright Huawei Inc. 2013-2015. All rights reserved
'**********************************************************************************
Option Explicit
SetLocale("en-us")

Dim oAPI, oDiscoveryData, oInst
Set oAPI = CreateObject("MOM.ScriptAPI")

Dim oArgs

set oArgs = wscript.arguments

If oArgs.Count &gt; 8 Then

Call oAPI.LogScriptEvent("DiscoverHostProperites.vbs",101,0, _
"script was called with fewer than three arguments and was not executed.")
Wscript.Quit -1

End If

' &#x53D6;&#x5F97;&#x5165;&#x53C2;
Dim SourceID, ManagedEntityID, deviceKey, deviceIp
Dim hostID, hostName, hostOs, hostIP

SourceID = oArgs(0)
ManagedEntityID = oArgs(1)
deviceKey = oArgs(2)
deviceIp = oArgs(3)

hostID = oArgs(4)
hostName = oArgs(5)
hostOs = oArgs(6)
hostIP = oArgs(7)

hostID = TRIM(hostID)
hostName = TRIM(hostName)
hostOs = TRIM(hostOs)
hostIP = TRIM(hostIP)

Set oDiscoveryData = oAPI.CreateDiscoveryData(0, SourceID, ManagedEntityID)

Dim oFSo
Set oFso = CreateObject("Scripting.FileSystemObject")
Set oInst = oDiscoveryData.CreateClassInstance("$MPElement[Name='Huawei.ISM.Management.Pack.huawei.Class.Host']$")
Call oInst.AddProperty ("$MPElement[Name='SNL!System.NetworkManagement.Node']/DeviceKey$", deviceKey)
Call oInst.AddProperty ("$MPElement[Name='Huawei.ISM.Management.Pack.huawei.Class.Host']/id$", hostID)
Call oInst.AddProperty ("$MPElement[Name='Huawei.ISM.Management.Pack.huawei.Class.Host']/name$", UTF8BadDecode(hostName))
Call oInst.AddProperty ("$MPElement[Name='Huawei.ISM.Management.Pack.huawei.Class.Host']/os$", OS(hostOs))
Call oInst.AddProperty( "$MPElement[Name='Huawei.ISM.Management.Pack.huawei.Class.Host']/ip$", hostIP)
Call oInst.AddProperty( "$MPElement[Name='Huawei.ISM.Management.Pack.huawei.Class.Host']/deviceIp$", deviceIp)

Call oDiscoveryData.AddInstance(oInst)

Public Function OS(system)
select Case system
Case 0
OS="Linux"
Case 1
OS="Windows"
Case 2
OS="Solaris"
Case 3
OS="HP-UX"
Case 4
OS="AIX"
Case 5
OS="enServer"
Case 6
OS="Mac OS"
Case 7
OS="VMware ESX"
Case 8
OS="Linux"
Case 9
OS="Windows Server 2012"
Case Else
OS=""
End select
End Function

'&#x5F62;&#x5F0F;&#x7C7B;&#x5982;code=E7-0x-0x93-0x9C-0xE7-0x93-0x9C-0x5F-0x30-0x30-0x39
Public Function UTF8BadDecode(ByVal code)
If code = "" Then
UTF8BadDecode = ""
Exit Function
End If

Dim tmp
Dim decodeStr
Dim codelen
Dim leftStr
Dim result
Dim str
str = code
result = ""

On Error Resume Next
code = Trim(code)
'&#x5C06;&#x5B57;&#x7B26;&#x4E32;&#x4E2D;&#x7684; &#x201C;-0x&#x201D;&#x66FF;&#x6362;&#x4E3A;&#x201C;.&#x201D;
code = Replace(code, "-0x", ".")
'&#x83B7;&#x53D6;&#x5DE6;&#x8FB9;&#x7684;&#x7B2C;&#x4E00;&#x4E2A;&#x5B57;&#x7B26;
leftStr = Left(code, 1)
If leftStr = "" Then

UTF8BadDecode = ""
Exit Function

ElseIf leftStr &lt;&gt; "." Then

result = str

ElseIf leftStr = "." Then

codelen = Len(code)

If (Mid(code, 2, 1) = "C" Or Mid(code, 2, 1) = "B") Then
decodeStr = Replace(Mid(code, 1, 6), ".", "")
tmp = c10ton(CLng("&amp;H" &amp; Hex(CLng("&amp;H" &amp; decodeStr) And &amp;H1F3F)), 2)
tmp = String(16 - Len(tmp), "0") &amp; tmp
result = result &amp; ChrW(CLng("&amp;H" &amp; c2to16(Mid(tmp, 3, 4)) &amp; c2to16(Mid(tmp, 7, 2) &amp; Mid(tmp, 11, 2)) &amp; Right(decodeStr, 1))) &amp; UTF8BadDecode(Right(code, codelen - 6))
ElseIf (Mid(code, 2, 1) = "E") Then
decodeStr = Replace(Mid(code, 1, 9), ".", "")
tmp = c10ton((CLng("&amp;H" &amp; Mid(Hex(CLng("&amp;H" &amp; decodeStr) And &amp;HF3F3F), 2, 3))), 2)
tmp = String(10 - Len(tmp), "0") &amp; tmp
result = result &amp; ChrW(CLng("&amp;H" &amp; (Mid(decodeStr, 2, 1) &amp; c2to16(Mid(tmp, 1, 4)) &amp; c2to16(Mid(tmp, 5, 2) &amp; Right(tmp, 2)) &amp; Right(decodeStr, 1)))) &amp; UTF8BadDecode(Right(code, codelen - 9))
Else
result = Chr(CLng("&amp;H" &amp; (Mid(code, 2, 2)))) &amp; UTF8BadDecode(Right(code, codelen - 3))
End If
End If

If Err.Number &lt;&gt; 0 Then
result = str
If isOpen = 0 Then
OpenLogFile()
End IF
logMessage = "ERROR : Script -Hexadecimal string parsing error.code:" &amp; str
MOMDebugLog 1, logMessage
End If
Err.Clear
UTF8BadDecode = result
End Function


'&#x4E8C;&#x8FDB;&#x5236;&#x4EE3;&#x7801;&#x8F6C;&#x6362;&#x4E3A;&#x5341;&#x516D;&#x8FDB;&#x5236;&#x4EE3;&#x7801;
Public Function c2to16(ByVal x)
On Error Resume Next
Dim i, strinfo
i = 1
strinfo = ""
For i = 1 To Len(x) Step 4
strinfo = strinfo &amp; Hex(c2to10(Mid(x, i, 4)))
Next
c2to16 = strinfo

If Err.Number &lt;&gt; 0 Then
If isOpen = 0 Then
OpenLogFile()
End IF
logMessage = "ERROR : Script -Binary code into hex code error.code:" &amp; x
MOMDebugLog 1, logMessage
End If
Err.Clear
End Function

'&#x4E8C;&#x8FDB;&#x5236;&#x4EE3;&#x7801;&#x8F6C;&#x6362;&#x4E3A;&#x5341;&#x8FDB;&#x5236;&#x4EE3;&#x7801;
Public Function c2to10(ByVal x)
On Error Resume Next
c2to10 = 0
If x = "0" Then Exit Function
Dim i
i = 0
For i = 0 To Len(x) - 1
If Mid(x, Len(x) - i, 1) = "1" Then c2to10 = c2to10 + 2 ^ (i)
Next

If Err.Number &lt;&gt; 0 Then
If isOpen = 0 Then
OpenLogFile()
End IF
logMessage = "ERROR : Script -Binary to decimal code error.code:" &amp; x
MOMDebugLog 1, logMessage
End If

Err.Clear
End Function

'10&#x8FDB;&#x5236;&#x8F6C;n&#x8FDB;&#x5236;(&#x9ED8;&#x8BA4;2)
Public Function c10ton(ByVal x, ByVal n)
On Error Resume Next
Dim i
i = x \ n
If i &gt; 0 Then
If x Mod n &gt; 10 Then
c10ton = c10ton(i, n) + Chr(x Mod n + 55)
Else
c10ton = c10ton(i, n) + CStr(x Mod n)
End If
Else
If x &gt; 10 Then
c10ton = Chr(x + 55)
Else
c10ton = CStr(x)
End If
End If
If Err.Number &lt;&gt; 0 Then
If isOpen = 0 Then
OpenLogFile()
End IF

logMessage = "ERROR : Script -Decimal code into binary code error.code:" &amp; x
MOMDebugLog 1, logMessage
End If
Err.Clear
End Function
Call oAPI.Return(oDiscoveryData)

</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID="ScriptDiscovery">
<Node ID="snmpProbe"/>
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.Discovery.Data</OutputType>
</DataSourceModuleType>