====== Windows Uptime ======
^ Author | [[ craig.boyce@rodney.govt.nz | Craig Boyce ]] |
^ Compatibility | Xymon 4.2 |
^ Requirements | Windows, BBWin |
^ Download | None |
^ Last Update | 2007-07-16 |
===== Description =====
A .vbs script that works with bbwin that you can use to alert when a client exceeds a specified number of days without a restart.
===== 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.
The script allows the changing of the test column name and uptime duration before alerting by changing the following lines in the script.
| strTestName = "uptime" | 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 =====
==== Uptime.vbs ====
'==========================================================================
' NAME: Uptime.vbs
' COMMENT: Check Uptime of server and report if greater than 30 days
' AUTHOR: Craig Boyce, Rodney District Council
' EMAIL: craig.boyce@rodney.govt.nz
' DATE : 30/10/2006
' VERSION : 2.00
'==========================================================================
On Error Resume Next
Dim objShell, objWMIService, WSHNetwork
Dim ServerName, strTestName, strAlarmState, strUpTime, strOutput
Dim logmessage, logfile, fso, f
' Set Variables
Set objShell = WScript.CreateObject("WScript.Shell")
Set WSHNetwork = WScript.CreateObject("WScript.Network")
ServerName = objShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
strTestName = "uptime" ' 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.
strAlarmState = "green"
strOutput = ""
' Check to see If used with BBWin or Big Brother client and set extPath.
extPath = objShell.RegRead("HKLM\SOFTWARE\BBWin\tmpPath")
If extPath = "" Then
extPath = objShell.RegRead("HKLM\SOFTWARE\Quest Software\BigBrother\bbnt\ExternalPath\")
End If
' ========================================
' Main Code Starts Here
strComputer = "." ' "." for local computer
On Error Resume Next
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
If Err.Number = 0 Then
On Error Goto 0
strQuery = "select * from Win32_PerfRawData_PerfOS_System"
Set colObjects = objWMIService.ExecQuery(strQuery)
For Each objWmiObject In colObjects
intPerfTimeStamp = objWmiObject.Timestamp_Object
intPerfTimeFreq = objWmiObject.Frequency_Object
intCounter = objWmiObject.SystemUpTime
Next
' Calculation in seconds:
'Calculations for Raw Counter Data:PERF_ELAPSED_TIME
'http://msdn.microsoft.com/library/en-us/perfmon/base/perf_elapsed_tim...
iUptimeInSec = (intPerfTimeStamp - intCounter)/intPerfTimeFreq
' convert the seconds
sUptime = ConvertTime(iUptimeInSec)
If CInt(Left(sUptime, 2)) > CInt(strUpTime) Then
strOutput = strOutput & "Uptime: " & sUptime & "exceeds " & strUpTime & " Days , This Server needs to be scheduled for a monthly restart"
strAlarmState = "red"
Else
strOutput = strOutput & "Uptime: " & sUptime
strAlarmState = "green"
End If
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
Function ConvertTime(seconds)
ConvSec = seconds Mod 60
ConvMin = (seconds Mod 3600) \ 60
ConvHour = (seconds Mod (3600 * 24)) \ 3600
ConvDays = seconds \ (3600 * 24)
ConvertTime = ConvDays & " days " & ConvHour & " hours " & ConvMin & " minutes "
End Function
===== Known Bugs and Issues =====
* None
===== To Do =====
===== Credits =====
===== Changelog =====
* **2007-07-16**
* Initial release