There are lots of occasions where it’d be handy to know if a server (or servers) is even up before we try to execute a command on them. Often, a script will fail to execute properly or run until it times out because the server we are trying to access or run a command on, simply isn’t network accessible. It might be down, firewalled, hung, or for some other inexplicable reason you just can’t access it.
There are a few ways to check if a server is online but often I find myself just “pinging” a box to see if it responds. Well since I do this so often I decided that I’d write it up as a function so that I could just check to see if a server “IsPingable()” and save myself the hassle of using some other functionality.
This function will return “TRUE” if the server is ping-able and “FALSE” if it’s not. So we could do something like “If IsPingable(myServer) Then” do some work “Else Goto 0”. Pretty easy huh? Here is the function:
Function IsPingable(vServer) 'This function will return TRUE or FALSE after pinging a server and 'checking it's response. 'This script is provided under the Creative Commons license located 'at http://creativecommons.org/licenses/by-nc/2.5/ . It may not 'be used for commercial purposes with out the expressed written consent 'of NateRice.com On Error Resume Next Const OpenAsDefault = -2 Const FailIfNotExist = 0 Const ForReading = 1 Set oShell = CreateObject("WScript.Shell") Set oFSO = CreateObject("Scripting.FileSystemObject") sTemp = oShell.ExpandEnvironmentStrings("%TEMP%") sTempFile = sTemp & "\runresult.tmp" oShell.Run "%comspec% /c ping -n 2 " & vServer & ">" & sTempFile, 0, True Set fFile = oFSO.OpenTextFile(sTempFile, ForReading, FailIfNotExist, _ OpenAsDefault) sResults = fFile.ReadAll fFile.Close oFSO.DeleteFile (sTempFile) IsPingable = (InStr(sResults, "TTL=") > 0) Set oShell = Nothing Set oFSO = Nothing End Function