Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ' Author: Dmitry Vayntrub (dvayntrub@yahoo.com)
- ' Loosely based off the check_ad_time.vbs by Mattias Ryrlén (mr@op5.com)
- ' Version: 1.01 17/01/2010
- ' Description: Check time offset of a Windows server against NTPD server(s).
- Set Args = WScript.Arguments
- If WScript.Arguments.Count < 3 Then
- Err = 3
- WScript.Echo "check_time.vbs V1.01"
- WScript.Echo "Usage: cscript /NoLogo check_time.vbs serverlist warn crit [biggest]"
- Wscript.Echo ""
- Wscript.Echo "Options:"
- Wscript.Echo " serverlist (required): one or more server names, coma-separated"
- Wscript.Echo " warn (required): warning offset in seconds, can be partial"
- Wscript.Echo " crit (required): critical offset in seconds, can be partial"
- Wscript.Echo " biggest (optional): if multiple servers, else use default least offset"
- Wscript.Echo ""
- Wscript.Echo "Example:"
- Wscript.Echo "cscript /NoLogo check_time.vbs myserver1,myserver2 0.4 5 biggest"
- Wscript.Quit(Err)
- End If
- serverlist = Args.Item(0)
- warn = Args.Item(1)
- crit = Args.Item(2)
- If WScript.Arguments.Count > 3 Then
- criteria = Args.Item(3)
- Else
- criteria = least
- End If
- Set objShell = CreateObject("Wscript.Shell")
- strCommand = "%SystemRoot%\System32\w32tm.exe /monitor /nowarn /computers:" & serverlist
- set objProc = objShell.Exec(strCommand)
- input = ""
- strOutput = ""
- Do While Not objProc.StdOut.AtEndOfStream
- input = objProc.StdOut.ReadLine
- If InStr(input, "NTP") Then
- strOutput = strOutput & input
- End If
- Loop
- Set myRegExp = New RegExp
- myRegExp.IgnoreCase = True
- myRegExp.Global = True
- myRegExp.Pattern = " NTP: ([+-][0-9]+\.[0-9]+)s"
- Set myMatches = myRegExp.Execute(strOutput)
- result = ""
- If myMatches(0).SubMatches(0) <> "" Then
- result = myMatches(0).SubMatches(0)
- End If
- For Each myMatch in myMatches
- If myMatch.SubMatches(0) <> "" Then
- If criteria = "biggest" Then
- If abs(result) < Abs(myMatch.SubMatches(0)) Then
- result = myMatch.SubMatches(0)
- End If
- Else
- If abs(result) > Abs(myMatch.SubMatches(0)) Then
- result = myMatch.SubMatches(0)
- End If
- End If
- End If
- ' Wscript.Echo myMatch.SubMatches(0) & " -debug"
- Next
- If result = "" Then
- Err = 3
- Status = "UNKNOWN"
- ElseIf result > crit Then
- Err = 2
- status = "CRITICAL"
- ElseIf result > warn Then
- Err = 1
- status = "WARNING"
- Else
- Err = 0
- status = "OK"
- End If
- Wscript.Echo "NTP " & status & ": Offset " & result & " secs|'offset'=" & result & "s;" & warn & ";" & crit & ";"
- Wscript.Quit(Err)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement