Differences

This shows you the differences between two versions of the page.

Link to this comparison view

monitors:dellsystemcheck [2009/11/23 05:45] (current)
Line 1: Line 1:
 +====== Dell System Check ======
 +
 +^ Author | [[ craig.boyce@rodney.govt.nz | Craig Boyce ]] |
 +^ Compatibility | Xymon 4.2 |
 +^ Requirements | Windows, BBWin, Dell Open Manage |
 +^ Download | None |
 +^ Last Update | 2007-08-06 |
 +
 +===== Description =====
 +The script reports the status of the hardware on Dell Servers running Windows and Dell OpenManage 5.0 or greater and alerts upon any failure reported.
 +The information is gathered using the commandline interface omreport.
 +The script has successfully reported on power supply and disk failures but I have not had any other hardware failures.
 +
 +===== Installation =====
 +=== Client side ===
 +  - Copy the script to the bbwin\ext directory or any sub directory you would prefer.
 +  - Update the bbwin\etc\bbwin.cfg externals section to include the script as per below making sure the path is correct.<​file>​
 +<​externals>​
 + <​setting name="​timer"​ value="​3m"​ />
 + <​setting name="​logstimer"​ value="​60s"​ />
 + <load value="​cscript //B ..\ext\SystemCheck.vbs"​ timer="​5m"​ /> 
 +</​externals>​
 +</​file>​
 +
 +The script allows the changing of the test column name and uptime duration before alerting by changing the following lines in the script.
 +
 +| strTestName = "​syscheck"​ | Change this to what you want the test column to be. |
 +| strUpTime = "​30"​ | Change this to the length of time required before alerting a reboot is required. |
 +
 +=== Server side ===
 +  * None
 +
 +===== Source =====
 +
 +==== SystemCheck.vbs ====
 +<hidden onHidden="​Show Code ⇲" onVisible="​Hide Code ⇱">​
 +<code vb>
 +'​==========================================================================
 +' NAME: Server System check.vbs
 +' COMMENT: Report Information from Dell OpenManage
 +' AUTHOR: Craig Boyce, Rodney District Council
 +' EMAIL: craig.boyce@rodney.govt.nz
 +' HISTORY
 +' VERSION : 1.00 13/08/2006 Initial Development
 +' VERSION : 2.00 20/7/2007 Production Release
 +' VERSION : 2.10 1/8/2007 Updated by Sigurður Guðbrandsson (sigurdur@raforninn.is) to report detailed information for Physical Disk, Memory, NIC and Temp
 +' Now Requires OpenManage 5.2 to display the Physical disk information
 +' VERSION : 2.20 3/8/2007 Resolved issue with a non green status changing all the following statuses to the non green status
 +' VERSION : 2.30 7/8/2007 Added the ability to turn off individual status checks if not wanted.
 + 
 +' Requires Dell OpenManage 5.0 or greater to be installed on the Dell Servers
 +'​==========================================================================
 + 
 +On Error Resume Next
 + 
 +Dim objShell,​WSHNetwork
 +Dim typelib,​cslid,​ServerName,​lastcntrlnum,​cntrlnum,​lastindexnum,​indexnum,​boolValid
 +Dim logmessage,​logfile
 +Dim strLayout,​strSize,​strLine,​intStart,​strFail,​strCmd
 +Dim shChassis,​shStorageVirtual,​shStoragePhysical,​shMemory,​shNetwork,​shTemp
 + 
 +' Set Variables and get the Server Name
 + 
 +Set objShell = WScript.CreateObject("​WScript.Shell"​)
 +Set WSHNetwork = WScript.CreateObject("​WScript.Network"​)
 + 
 +ServerName = objShell.ExpandEnvironmentStrings("​%COMPUTERNAME%"​)
 + 
 +' User definable section
 + 
 +strTestName = "​syscheck"​ ' Change this to what you want the test column to be.
 +shChassis = 1 '​ Change this to 0 to disable the Chassis status check
 +shStorageVirtual = 1 ' Change this to 0 to disable the Storage Virtual status check
 +shStoragePhysical = 1 ' Change this to 0 to disable the Storage Physical status check
 +shMemory = 1 '​ Change this to 0 to disable the Memory status check
 +shNetwork = 1 '​ Change this to 0 to disable the Network status check
 +shTemp = 1 '​ Change this to 0 to disable the Temperature status check
 + 
 +strAlarmState = "​green"​
 +strOutput ​  = ""​
 +cntrlnum = 0
 +indexnum = 0
 +Set oShell = WScript.CreateObject("​WScript.Shell"​)
 +' Check to see If used with BBWin or Big Brother client and set extPath.
 +extPath = oShell.RegRead("​HKLM\SOFTWARE\BBWin\tmpPath"​)
 +If extPath = ""​ Then
 + extPath = oShell.RegRead("​HKLM\SOFTWARE\Quest Software\BigBrother\bbnt\ExternalPath\"​)
 +End If
 + 
 +' ========================================
 +' Main Code Starts Here
 + 
 +Set WinMgt = GetObject("​winmgmts:"​)
 +Set CompSys = WinMgt.ExecQuery("​Select * from Win32_ComputerSystem"​)
 +For Each Item In CompSys
 +strmake = rtrim(item.manufacturer)
 +strmodel = rtrim(item.model)
 +strram = Clng(Item.TotalPhysicalMemory /1048576) + 1
 +Next
 + 
 +Set CompSys = WinMgt.ExecQuery("​Select * from Win32_Processor",,​48)
 +For Each Item In CompSys
 +strproc = Item.Name
 +Next
 + 
 +Set CompSys = WinMgt.ExecQuery("​Select * from Win32_BIOS"​)
 +For Each Item In CompSys
 +strSerial = rtrim(item.SerialNumber)
 +Next
 + 
 +strOutput = strOutput & "​System Information for Server " & ServerName & vbcrlf & vbcrlf
 +strOutput = strOutput & strmake & vbtab & strmodel & vbtab & "​Service Tag #" & vbtab & strSerial & vbcrlf & vbcrlf
 +strOutput = strOutput & "​Processor:"​ & vbtab & strproc & vbcrlf
 +strOutput = strOutput & "​Memory:"​ & vbtab & vbtab & strram & " Mb" & vbcrlf & vbcrlf
 + 
 + 
 + 
 +If Left(strmake,​ 4) = "​Dell"​ Then
 + omapath = oShell.RegRead("​HKLM\SOFTWARE\Dell Computer Corporation\OpenManage\Applications\SystemsManagement\InstallPath"​)
 + omaver = oShell.RegRead("​HKLM\SOFTWARE\Dell Computer Corporation\OpenManage\Applications\SystemsManagement\Version"​)
 + omreportpath = omapath & "​oma\bin\omreport"​
 +
 + strOutput = strOutput & "<a href=https://"​ & ServerName & ":1311 target=_new>​Dell OpenManage Web Page</​a>"​ & vbcrlf & vbcrlf
 +
 + If shChassis = 1 Then
 + strOutput = strOutput & "​Chassis Status Information"​ & vbcrlf & vbcrlf
 + 
 + strcommand = Chr(34) &​omreportpath & Chr(34) & " chassis" ​
 + Set objWshScriptExec = objShell.Exec(strcommand)
 + Set objStdOut = objWshScriptExec.StdOut
 + 
 + While Not objStdOut.AtEndOfStream
 +   ​ strLine = objStdOut.ReadLine
 +    If InStr(strLine,"​Ok"​) Then
 +    strOutput = strOutput & "&​green"​ & vbtab & strLine & vbcrlf
 +    End If
 +    If InStr(strLine,"​Non-Critical"​) Then
 +   ​ strAlarmState = "​yellow"​
 +       ​ strOutput = strOutput & "&​yellow"​ & vbtab & strLine & vbcrlf
 +    End If
 +    If InStr(strLine,"​Critical"​) Then
 +   ​ strAlarmState = "​red"​
 +       ​ strOutput = strOutput & "&​red"​ & vbtab & strLine & vbcrlf
 +    End If
 + Wend
 + End If
 +
 + If shStorageVirtual = 1 Then
 + strOutput = strOutput & vbcrlf & "​Storage Status Information for virtual disks" & vbcrlf & vbcrlf
 +
 + ' Determine the number of storage controllers in the server and loop through them displaying the virtual disk status
 + 
 + lastcntrlnum = DELLStorageCntrlNum()
 + While CInt(cntrlnum) <= CInt(lastcntrlnum)
 + strcommand = Chr(34) &​omreportpath & Chr(34) & " storage vdisk controller="​ & cntrlnum ​
 + Set objWshScriptExec = objShell.Exec(strcommand)
 + Set objStdOut = objWshScriptExec.StdOut
 + DELLStorageStatus cntrlnum
 + cntrlnum = cntrlnum + 1
 + Wend
 + End If
 +
 + If shStoragePhysical = 1 Then
 + strOutput = strOutput & vbcrlf & "​Storage Status Information for physical disks" & vbcrlf & vbcrlf
 +
 + ' Determine the number of storage controllers in the server and loop through them displaying the physical disk status
 + ​ '​ Time for a reset also on the ctrlnum used earlier.
 + cntrlnum = 0
 + lastcntrlnum = DELLStorageCntrlNum()
 + While CInt(cntrlnum) <= CInt(lastcntrlnum)
 + strcommand = Chr(34) &​omreportpath & Chr(34) & " storage pdisk controller="​ & cntrlnum ​
 + Set objWshScriptExec = objShell.Exec(strcommand)
 + Set objStdOut = objWshScriptExec.StdOut
 + DELLStorageStatus cntrlnum
 + cntrlnum = cntrlnum + 1
 + Wend
 + End If
 +
 + If shMemory = 1 Then 
 + strOutput = strOutput & vbcrlf & "​Memory Status Information for memory modules"​ & vbcrlf & vbcrlf
 +
 + ' Determine the number of memory indexes in the server and loop through them displaying the memory index status
 + strCmd = " chassis memory"​
 + lastindexnum = DELLIndexNum
 + while CInt(indexnum) <= CInt(lastindexnum)
 + strcommand = Chr(34) &​omreportpath & Chr(34) & " chassis memory index="​ & indexnum ​
 + Set objWshScriptExec = objShell.Exec(strcommand)
 + Set objStdOut = objWshScriptExec.StdOut
 + DELLMemoryStatus indexnum
 + indexnum = indexnum + 1
 + Wend
 + End If
 +
 + indexnum = 0 ' Reset the indexnum variable
 +
 + If shNetwork = 1 Then
 + strOutput = strOutput & vbcrlf & "​Network Interface Status Information for NICS" & vbcrlf & vbcrlf
 +
 + ' Determine the number of nic indexes in the server and loop through them displaying the nic index status
 + strCmd = " chassis nics"​ '​ We need to know what index we want
 + lastindexnum = DELLIndexNum
 + while CInt(indexnum) <= CInt(lastindexnum)
 + strcommand = Chr(34) &​omreportpath & Chr(34) & " chassis nics index="​ & indexnum ​
 + Set objWshScriptExec = objShell.Exec(strcommand)
 + Set objStdOut = objWshScriptExec.StdOut
 + DELLNetworkStatus indexnum
 + indexnum = indexnum + 1
 + Wend
 + End If
 +
 + indexnum = 0 ' Reset the indexnum variable
 +
 + If shTemp = 1 Then
 + strOutput = strOutput & vbcrlf & "​Temperature Status Information for Chassis"​ & vbcrlf & vbcrlf
 +
 + ' Determine the number of nic indexes in the server and loop through them displaying the nic index status
 + strCmd = " chassis temps"
 + lastindexnum = DELLIndexNum
 + while CInt(indexnum) <= CInt(lastindexnum)
 + strcommand = Chr(34) &​omreportpath & Chr(34) & " chassis temps index="​ & indexnum ​
 + Set objWshScriptExec = objShell.Exec(strcommand)
 + Set objStdOut = objWshScriptExec.StdOut
 + DELLTemperatureStatus indexnum
 + indexnum = indexnum + 1
 + Wend
 + End If
 +
 +
 +End If
 + 
 + 
 +If strmake = "​HP"​ Then 
 +' For future development,​ If only HP had a command line interface for getting the server status
 +End If
 + 
 + 
 +' Write the file for BB
 +WriteFile extPath, strTestName,​ strAlarmState,​ strOutput
 + 
 +'​===========================================================
 +' FUNCTIONS and SUBS start here
 + 
 +' This SUB is used for outputting the file to the external'​s directory in bb
 +SUB WriteFile(strExtPath,​ strTestName,​ strAlarmState,​ strOutput)
 +    Set fso = CreateObject("​Scripting.FileSystemObject"​)
 +    strOutput = strAlarmState & " " & Date & " " & Time & vbcrlf & vbcrlf & strOutput & vbcrlf
 +    Set f = fso.OpenTextFile(strExtPath & "​\"​ & strTestName , 8 , TRUE)
 +    f.Write strOutput
 +    f.Close
 +    Set fso = Nothing
 +END Sub
 + 
 +' This Function is used for determining the number of storage controllers in the server
 +' NEW: vdisk controllers should be the same amount as pdisk controllers (virtual == physical)
 +Function DELLStorageCntrlNum
 + strcommand = Chr(34) &​omreportpath & Chr(34) & " storage vdisk controller=10"​ ' Check for 10 Controllers,​ The output lists the valid controllers in the server
 + Set objWshScriptExec = objShell.Exec(strcommand)
 + Set objStdOut = objWshScriptExec.StdOut
 + While Not objStdOut.AtEndOfStream
 +   ​ strLine = objStdOut.ReadLine
 +    If InStr(strLine,"​Invalid controller value. Read, controller=10"​) Then
 +   ​ While Not objStdOut.AtEndOfStream
 +   ​ strLine = objStdOut.ReadLine
 +    If InStr(strLine,"​Valid values"​) Then
 +   ​ DELLStorageCntrlNum = Right(strLine,​ 1) ' Get the highest numbered controller
 +   ​ End If     
 +    Wend
 +    End If
 +  Wend
 +End Function
 +
 +' This function is used for determining the number of indexes, this is almost identical to the storage function above
 +' TODO: I assume that there is only one memory array .. however I do not have a server with more arrays so this is defaulted to Array 1.
 +Function DELLIndexNum
 + strcommand = Chr(34) &​omreportpath & Chr(34) & strCmd & " index=50"​ ' Check for 50 Indexes, The output lists the valid indexes in the server
 + Set objWshScriptExec = objShell.Exec(strcommand)
 + Set objStdOut = objWshScriptExec.StdOut
 + While Not objStdOut.AtEndOfStream
 +   ​ strLine = objStdOut.ReadLine
 +    If InStr(strLine,"​Error! Index too large."​) Then
 + DELLIndexNum = Right(strLine,​ 1) ' Get the highest numbered index
 +    End If
 +  Wend
 +End Function
 +
 +' This SUB is used for determining the status and information of the Dell Storage components
 +Sub DELLStorageStatus(strcntrl)
 + While Not objStdOut.AtEndOfStream
 +   ​ strLine = objStdOut.ReadLine
 +    If InStr(strLine,"​No Array/Hard Disks found"​) Then ' Check to see if there is a virtual disk on the controller
 +   ​ Exit Sub
 +    End If
 +   ​ While Not objStdOut.AtEndOfStream
 +   ​ strLine = objStdOut.ReadLine
 +    If InStr(strLine,"​Status"​) Then ' Check the status line of the output and get the status
 +   ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ newLine = Mid(strLine,​ intStart, 250)
 +   ​ If newLine = "​Ok"​ Then
 +   ​ strOutput = strOutput & "&​green"​ & vbtab & newLine
 +   ​ End If
 +   ​ If newLine = "​Non-Critical"​ Then
 +   ​ strAlarmState = "​yellow"​
 +   ​ strOutput = strOutput & "&​yellow"​ & vbtab & newLine
 +   ​ End If
 +   ​ If newLine = "​Critical"​ Then
 +   ​ strAlarmState = "​red"​
 +   ​ strOutput = strOutput & "&​red"​ & vbtab & newLine
 +   ​ End If
 +        End If
 + ' ADDED: difference between physical and virtual includes added if statements.
 + ' ADDED: predicted failure notice.
 +        If Left(strLine,​ 4) = "​Name"​ Then
 +       ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ strName = Mid(strLine,​ intStart, 250)
 +   ​ strOutput = strOutput & vbtab & ": " & strName & " on Storage Controller " & strcntrl & vbcrlf
 +    End If
 +    If Left(strLine,​ 6) = "​Layout"​ Then
 +       ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ strLayout = Mid(strLine,​ intStart, 250)
 +    End If
 +    If Left(strLine,​ 4) = "​Size"​ Then
 +       ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ strSize = Mid(strLine,​ intStart, 250)
 +   ​ strOutput = strOutput & vbtab & vbtab & " ​ : " & strLayout & vbtab & strSize & vbcrlf & vbcrlf
 +    End If
 + If Left(strLine,​ 7) = "​Failure"​ Then
 + intStart = InStr(strLine,​ ":"​)
 + intstart = intStart + 2
 + strFail = Mid(strLine,​ intStart, 250)
 +    End If
 +    If Left(strLine,​ 4) = "​Type"​ Then
 +       ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ strLayout = Mid(strLine,​ intStart, 250)
 +    End If
 +    If Left(strLine,​ 8) = "​Capacity"​ Then
 +       ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ strSize = Mid(strLine,​ intStart, 250)
 +   ​ strOutput = strOutput & vbtab & vbtab & " ​ : " & strLayout & vbtab & strSize & vbcrlf
 + strOutput = strOutput & vbtab & vbtab & " ​ : Failure Predicted = " & strFail & vbcrlf & vbcrlf
 + End If
 +      Wend
 + Wend
 +End Sub
 + 
 +' This SUB is used for determining the status and information of the Dell Memory components
 +' The reason I read the next line after finding the line I want is that when I run omreport chassis memory index=NUM I get an attribute line and a value line.
 +Sub DELLMemoryStatus(strmemindex)
 + While Not objStdOut.AtEndOfStream
 +   ​ strLine = objStdOut.ReadLine
 +    If InStr(strLine,"​Error! Index too large. Maximum memory index is:") Then ' Check to see if there is a memory module on this index.
 +   ​ Exit Sub
 +    End If
 +   ​ While Not objStdOut.AtEndOfStream
 +   ​ strLine = objStdOut.ReadLine
 +    If InStr(strLine,"​Status"​) Then ' Check the status line of the output and get the status
 + strLine = objStdOut.ReadLine
 +   ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ newLine = Mid(strLine,​ intStart, 250)
 +   ​ If newLine = "​Ok"​ Then
 +   ​ strOutput = strOutput & "&​green"​ & vbtab & newLine
 +   ​ End If
 +   ​ If newLine = "​Non-Critical"​ Then
 +   ​ strAlarmState = "​yellow"​
 +   ​ strOutput = strOutput & "&​yellow"​ & vbtab & newLine
 +   ​ End If
 +   ​ If newLine = "​Critical"​ Then
 +   ​ strAlarmState = "​red"​
 +   ​ strOutput = strOutput & "&​red"​ & vbtab & newLine
 +   ​ End If
 +    End If
 + ' Let us display all the useful information now that we have the status.
 +        If Right(strLine,​ 4) = "​Name"​ Then
 + strLine = objStdOut.ReadLine
 +       ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ strName = Mid(strLine,​ intStart, 250)
 +   ​ strOutput = strOutput & vbtab & ": " & strName & " on Memory Index " & strmemindex & vbcrlf
 +    End If
 +    If Right(strLine,​ 4) = "​Size"​ Then
 + strLine = objStdOut.ReadLine
 +       ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ strSize = Mid(strLine,​ intStart, 250)
 +    End If
 +    If Right(strLine,​ 4) = "​Type"​ Then
 + strLine = objStdOut.ReadLine
 +       ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ strLayout = Mid(strLine,​ intStart, 250)
 +   ​ strOutput = strOutput & vbtab & vbtab & " ​ : " & strLayout & vbtab & strSize & vbcrlf
 +    End If
 + If Right(strLine,​ 8) = "​Failures"​ Then
 + strLine = objStdOut.ReadLine
 + intStart = InStr(strLine,​ ":"​)
 + intstart = intStart + 2
 + strFail = Mid(strLine,​ intStart, 250)
 +   ​ strOutput = strOutput & vbtab & vbtab & " ​ : Failures = " & strFail & vbcrlf & vbcrlf
 +    End If
 +      Wend
 + Wend
 +End Sub
 +
 +' This SUB is used for determining the status and information of the Dell Network Interfaces
 +Sub DELLNetworkStatus(strnicindex)
 + While Not objStdOut.AtEndOfStream
 +   ​ strLine = objStdOut.ReadLine
 +    If InStr(strLine,"​Error! Index too large."​) Then ' Check to see if there is a memory module on this index.
 +   ​ Exit Sub
 +    End If
 + boolValid = 0
 +   ​ While Not objStdOut.AtEndOfStream
 +   ​ strLine = objStdOut.ReadLine
 +' We cant get status information from NIC's
 +' ​ If InStr(strLine,"​Status"​) Then ' Check the status line of the output and get the status
 +'​ strLine = objStdOut.ReadLine
 +' ​ intStart = InStr(strLine,​ ":"​)
 +' ​  ​ intStart = intStart + 2
 +' ​  ​ newLine = Mid(strLine,​ intStart, 250)
 +' ​  ​ If newLine = "​OK"​ Then
 +' ​  ​ strOutput = strOutput & "&​green"​ & vbtab & newLine
 +' ​  ​ End If
 +' ​  ​ If newLine = "​Non-Critical"​ Then
 +' ​  ​ strAlarmState = "​yellow"​
 +'​ strOutput = strOutput & "&​yellow"​ & vbtab & newLine
 +' ​  ​ End If
 +' ​  ​ If newLine = "​Critical"​ Then
 +' ​  ​ strAlarmState = "​red"​
 +'​ strOutput = strOutput & "&​red"​ & vbtab & newLine
 +' ​  ​ End If
 +' ​      
 +' ​       End If
 + ' Let us display all the useful information we need
 +        If Left(strLine,​ 9) = "​Interface"​ Then
 +       ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ strName = Mid(strLine,​ intStart, 250)
 +   ​ strOutput = strOutput & vbtab & ": " & strName & " on NIC Index " & strnicindex & vbcrlf
 +    End If
 +    If Left(strLine,​ 2) = "​IP"​ Then
 +        ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ strSize = Mid(strLine,​ intStart, 250)
 +    End If
 +    If Left(strLine,​ 10) = "​Connection"​ Then
 +       ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ strLayout = Mid(strLine,​ intStart, 250)
 + If Right(strLayout,​ 9) = "​Connected"​ Then
 + boolValid = 1
 + End If
 +   ​ strOutput = strOutput & vbtab & vbtab & " ​ : Connection Status: " & strLayout & vbcrlf
 + If boolvalid = 1 Then
 +    ​ strOutput = strOutput & vbtab & vbtab & " ​ : IP Address: " & strSize & vbcrlf
 + End If
 +    End If
 +      Wend
 + Wend
 + strOutput = strOutput & vbcrlf
 +End Sub
 +
 +' This SUB is used for determining the status and information of the Dell Chassis Temperatures
 +Sub DELLTemperatureStatus(strtempindex)
 + While Not objStdOut.AtEndOfStream
 +   ​ strLine = objStdOut.ReadLine
 +    If InStr(strLine,"​Error! Index too large."​) Then ' Check to see if there is a temperature sensor on this index.
 +   ​ Exit Sub
 +    End If
 +   ​ While Not objStdOut.AtEndOfStream
 +   ​ strLine = objStdOut.ReadLine
 +    If InStr(strLine,"​Status"​) Then ' Check the status line of the output and get the status
 +   ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ newLine = Mid(strLine,​ intStart, 250)
 +   ​ If newLine = "​Ok"​ Then
 +   ​ strOutput = strOutput & "&​green"​ & vbtab & newLine
 +   ​ End If
 +   ​ If newLine = "​Non-Critical"​ Then
 +   ​ strAlarmState = "​yellow"​
 +   ​ strOutput = strOutput & "&​yellow"​ & vbtab & newLine
 +   ​ End If
 +   ​ If newLine = "​Critical"​ Then
 +   ​ strAlarmState = "​red"​
 +   ​ strOutput = strOutput & "&​red"​ & vbtab & newLine
 +   ​ End If
 +  End If
 + ' Let us display all the useful information now that we have the status.
 +        If Left(strLine,​ 5) = "​Probe"​ Then
 +       ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ strName = Mid(strLine,​ intStart, 250)
 +   ​ strOutput = strOutput & vbtab & ": " & strName & " on Chassis Index " & strtempindex & vbcrlf
 +    End If
 +    If Left(strLine,​ 7) = "​Reading"​ Then
 +       ​ intStart = InStr(strLine,​ ":"​)
 +   ​ intStart = intStart + 2
 +   ​ strLayout = Mid(strLine,​ intStart, 250)
 +   ​ strOutput = strOutput & vbtab & vbtab & " ​ : Temperature is " & strLayout & vbcrlf
 +    End If
 +      Wend
 + Wend
 +End Sub
 +</​code>​
 +</​hidden>​
 +\\ 
 +
 +Download source: {{:​monitors:​systemcheck.zip}}
 +
 +===== Screenshot =====
 +{{:​monitors:​syscheck.png?​600}}
 +
 +===== Known  Bugs and Issues =====
 +  * None
 +
 +===== To Do =====
 +Please let me know of any issues with the script and I will attempt to resolve them.
 +
 +===== Credits =====
 +The script is in part based upon a batch script called openmanage.cmd written by Dave Sobel (dave@evolvetech.com)
 +
 +===== Changelog =====
 +
 +  * **2006-08-13**
 +    * 1.00 - Initial Development ​
 +  * **2007-07-20**
 +    * 2.00 - Production Release
 +  * **2007-08-01**
 +    * 2.10 - Updated by Sigurður Guðbrandsson (sigurdur@raforninn.is) to report detailed information for Physical Disk, Memory, NIC and Temp
 +    * Now Requires OpenManage 5.2 to display the Physical disk information
 +  * **2007-08-03** ​
 +    *2.20 - Resolved issue with a non green status changing all the following statuses to the non green status
 +  * **2007-08-07**
 +    * 2.30 - Added the ability to turn off individual status checks if not wanted.
 + 
  
  • monitors/dellsystemcheck.txt
  • Last modified: 2009/11/23 05:45
  • (external edit)