Here is a pair of short scripts I use for automating some tasks I do. It pings 
and then does an action only if the ping succeeds. And it properly fails on the 
"destination host unreachable" ping result.

You use it by including a command on the same line. i.e.: 
    ifpingsok.bat myserver echo something
or  ifpingsok myotherserver copy something somewhere
or  for /f %i in (filefullofservernames.txt) do ifpingsok %i 
RunSomeImportantCommand

It has worked for me except for extremely complex commands. 
Oops, almost forgot to include stderr.bat. Maybe I need to rework this in 
PowerShell, but it works and I use it almost daily.

::::::::::::::
:: ifpingsok.bat
@echo off
setlocal
set pingsOKtemp=c:\temp\pingsOK.%random%.tmp

if {%1}=={} exit /b 5
if {%2}=={} exit /b 5

ping -4 -n 2 %1 | findstr Reply > %pingsOKtemp%

findstr bytes %pingsOKtemp% > nul
set exitcode=%errorlevel%

for /f "tokens=1,*" %%i in ('echo %*') do set stuff2do=%%j
if not %exitcode%==0 call StdErr.bat "%1 doesn't ping" & goto :endfail
%stuff2do%

:endok
del /q %pingsOKtemp%
endlocal
exit /b 0

:endfail
del /q %pingsOKtemp%
endlocal
exit /b 1
::::::::::::::
:: stderr.bat
@echo off
setlocal
if exist "%TEMP%\StdErr.vbs" goto out
@echo dim err>"%TEMP%\StdErr.vbs"
@echo Set objshell = CreateObject("WScript.Shell")>>"%TEMP%\StdErr.vbs"
@echo Set objArgs = WScript.Arguments>>"%TEMP%\StdErr.vbs"
@echo err=objArgs(0)>>"%TEMP%\StdErr.vbs"
@echo WScript.StdErr.Writeline err>>"%TEMP%\StdErr.vbs"
:out
if {%1}=={} goto outNone
cscript //nologo "%TEMP%\StdErr.vbs" %1
endlocal
goto :EOF
:outNone
cscript //nologo "%TEMP%\StdErr.vbs" "No Parameter Provided."
endlocal


Doug Hilderbrand | Systems Administrator Sr., Information Technology | Crane 
Aerospace & Electronics

From: [email protected] [mailto:[email protected]] On 
Behalf Of Micheal Espinola Jr
Sent: Thursday, November 6, 2014 2:04 PM
To: ntsysadm
Subject: Re: [NTSysADM] Dirty batch for up servers

As an example of what you can scrape, you could do the following within the 
parenthesis:

FOR /F "tokens=6 delims== " %%I IN ('findstr /I /C:"Average = " 
%TEMP%\SpeedTest.txt') DO SET SpdTst=%%I

This capture the average ping round-trip time, and would allow you to 
potentially flag latency problems, even if all the pings are successful.


--
Espi
 

On Thu, Nov 6, 2014 at 12:38 PM, David McSpadden <[email protected]> wrote:
Thanks guys.
This helps.
 
 
From: [email protected] [mailto:[email protected]] On 
Behalf Of Micheal Espinola Jr
Sent: Thursday, November 06, 2014 3:07 PM
To: ntsysadm
Subject: Re: [NTSysADM] Dirty batch for up servers
 
In its simplest form:
 
PING #.#.#.#>%TEMP%\SpeedTest.txt
IF "%ERRORLEVEL%" NEQ "0" ()
 
Echoing to a text file gives you the opportunity to scrape for any verbose 
output if you need to.  Within the parenthesis, you can do whatever you want 
based on a ping failure.


--
Espi
 
 
On Thu, Nov 6, 2014 at 8:13 AM, David McSpadden <[email protected]> wrote:
I want to run a windows batch the just does a ping.
If the ping returns good data do nothing but if the ping fails set an error 
code I can look for and address it outside the batch.
Anyone have or can point me to a . b a t script that does this already??
Thanks
 
This e-mail and any files transmitted with it are property of Indiana Members 
Credit Union, are confidential, and are intended solely for the use of the 
individual or entity to whom this e-mail is addressed. If you are not one of 
the named recipient(s) or otherwise have reason to believe that you have 
received this message in error, please notify the sender and delete this 
message immediately from your computer. Any other use, retention, 
dissemination, forwarding, printing, or copying of this email is strictly 
prohibited.
 
Please consider the environment before printing this email.
 
This e-mail and any files transmitted with it are property of Indiana Members 
Credit Union, are confidential, and are intended solely for the use of the 
individual or entity to whom this e-mail is addressed. If you are not one of 
the named recipient(s) or otherwise have reason to believe that you have 
received this message in error, please notify the sender and delete this 
message immediately from your computer. Any other use, retention, 
dissemination, forwarding, printing, or copying of this email is strictly 
prohibited.

Please consider the environment before printing this email.

--------------------------------------------------------------------------------
Connect with us on LinkedIn!
http://www.linkedin.com/companies/crane-aerospace-electronics

We value your opinion!  How may we serve you better? 
Please click the survey link to tell us how we are doing:
http://www.craneae.com/ContactUs/VoiceofCustomer.aspx
Your feedback is of the utmost importance to us. Thank you for your time.
--------------------------------------------------------------------------------
Crane Aerospace & Electronics Confidentiality Statement:
The information contained in this email message may be privileged and is 
confidential information intended only for the use of the recipient, or any 
employee or agent responsible to deliver it to the intended recipient. Any 
unauthorized use, distribution or copying of this information is strictly 
prohibited 
and may be unlawful. If you have received this communication in error, please 
notify 
the sender immediately and destroy the original message and all attachments 
from 
your electronic files.
--------------------------------------------------------------------------------


Reply via email to