'========================================================================== ' NAME: Synthetic DNS Lookup, version 3.0 ' AUTHORS: Marcus Oh (with a tweak from Pete) ' Updated for OpsMgr 2007 by Bryan Zabchuk ' DATE : 2/27/2008 ' COMMENT: Returns 'error' if nslookup fails. 'Script Arguments '================= '/Host: - FQDN of host(A) record to retrieve '/Namesvr: - comma-separated list of DNS Servers to Query '/Logsuccess: - (Boolean) If set to 1, event will be logged upon successful lookup '========================================================================== Option Explicit 'On Error Resume Next 'Declare variables Dim objShell Dim colNamedArguments Dim strHost Dim strNameServer Dim bLogSuccessEvent Dim iNames Dim sCommand Dim objShellRun Dim sLine Dim NameTag Dim Proceed Dim sData Dim aLine Dim consoleError 'Ops Manager API variables 'Dim objMOMAPI Set objShell = CreateObject("Wscript.Shell") 'Instantiate object for collecting values passed to the script Set colNamedArguments = WScript.Arguments.Named 'Instantiate Opsmgr runtime scripting 'Set objMOMAPI = CreateObject("MOM.ScriptAPI") 'Standard Event Type Numeric Values Const EVENT_TYPE_ERROR = 1 Const EVENT_TYPE_WARNING = 2 Const EVENT_TYPE_INFORMATION = 4 strHost = colNamedArguments.Item("Host") strNameServer = colNamedArguments.Item("Namesvr") bLogSuccessEvent = CBool(colNamedArguments("Logsuccess")) If colNamedArguments.Exists("Namesvr") Then 'WScript.Echo strNameServer If InStr(strNameServer,",") <> 0 Then iNames = Instr(strNameServer, ",") Do While iNames > 0 DNSlookup strHost, Trim(Left(strNameServer, iNames - 1)) strNameServer = Mid(strNameServer,iNames + 1) iNames = InStr(strNameServer,",") If iNames = 0 Then DNSlookup strHost, Trim(strNameServer) End If Loop Else DNSlookup strHost, Trim(strNameServer) End If Else 'Call objMOMAPI.LogScriptEvent("DNSSyntheticScriptv3.vbs ",4446,EVENT_TYPE_WARNING,"No DNS servers defined for " & strHost & ".") WScript.Echo "DNSSyntheticScriptv3.vbs:","No name servers defined." End If Function DNSlookup(strHost, strNameServer) sCommand = "%ComSpec% /c nslookup " & strHost & " " & strNameServer 'WScript.Echo sCommand Set objShellRun = objShell.Exec(sCommand) Proceed = 0 consoleError = InStr(objShellRun.StdErr.ReadAll,"*") If consoleError > 0 Then WScript.Echo objShellRun.StdErr.ReadAll Proceed = 0 Else Do Until objShellRun.StdOut.AtEndOfStream sLine = Trim(objShellRun.StdOut.ReadLine) NameTag = LCase(Left(sLine,5)) Select Case NameTag Case "name:" Proceed = 1 End Select If Proceed = 1 Then sData = Trim(Mid(sLine,6)) aLine = Split(sLine, ":") sData = Trim(aLine(1)) Exit Do End If Loop End If If Proceed = 0 Then 'Call objMOMAPI.LogScriptEvent("DNSSyntheticScriptv3.vbs ",4447,EVENT_TYPE_ERROR,"Lookup failed for " & strHost & " on DNS Server " & strNameServer & ".") WScript.Echo "DNSSyntheticScriptv3.vbs:","Lookup failed for " & strHost & " on DNS Server " & strNameServer & "." ElseIf Proceed = 1 and bLogSuccessEvent Then 'Call objMOMAPI.LogScriptEvent("DNSSyntheticScriptv3.vbs ",4448,EVENT_TYPE_INFORMATION,"Successfully looked up " & strHost & "on DNS Server " & strNameServer & ".") WScript.Echo "DNSSyntheticScriptv3.vbs: LogSuccessEvent","Successfully looked up " & strHost & " on DNS Server " & strNameServer & "." End If End Function '**************END SCRIPT********************