2014-03-05 94 views
0

我試圖創建一個腳本,像每5或10秒鐘一次ping我的遠程計算機,以查看重新啓動後是否重新聯機。批處理腳本每5秒鐘ping遠程計算機?

我有這樣的代碼,似乎工作,但像瘋了一樣的垃圾郵件,我只需要它檢查每5秒左右。

如果它一旦獲得成功的連接就停止循環,它將會帶來好處。

@echo off 
:loop 
echo Checking connection... 

ping -n 1 xx.xxx.xxx.xx >nul 
if errorlevel 1 (
    cls 
    echo Computer is offline 
    goto loop>nul 

) 

cls 
echo Computer is online 
    goto loop>nul 

回答

1
@echo off 
:loop  
    ping -n 1 -w 500 -4 xx.xx.xx.xx 2>nul|find "TTL=" >nul||(echo offline & ping -w 1000 -n 6 localhost >nul & goto loop) 
    echo online 
+0

正是我需要的! 我剛剛在結尾處添加了「暫停> nul」,因此它在得到響應時不會關閉。 – Tomas

0

沒有測試,但這應該工作:

@echo off 
SET IP=xxx.xxx.xxx.xxx 
SET TIMEOUT=5000 
:loop 
echo Checking connection... 

ping -n 1 %IP% >nul 
if errorlevel not 0 (
    cls 
    echo Computer at %IP% is offline, waiting %TIMEOUT%ms before retrying 
    ping -n 1 1.0.0.1 -w %TIMEOUT% >nul 
    goto loop>nul 

) 
echo Computer at %IP% is online 

你可以改變

SET IP=xxx.xxx.xxx.xxx 

到:

SET IP=%1 

,並給IP地址作爲參數來批處理文件。

此外,請確保IP 1.0.0.1不可達,它用於創建超時。

0

這是我該怎麼做。

@echo off 
setlocal 

:pingagain 
set /a inc+=5 
set "ip=xx.xx.xx.xx" 
Call :IsPingable %ip% && (
Echo %ip% is online 
) || (
Echo %ip% is not online yet. 
ping 127.0.0.1 -n 1 -w 5000>nul 
goto :pingagain) 
exit /b 

:IsPingable <comp> 
ping -n 1 -w 3000 -4 -l 8 "%~1" | Find "TTL=">nul 
exit /b 
1

下面將是您的問題精解,我猜。試試這個腳本,讓我知道,如果達工作。

#!/bin/ksh 
pingSuccess=0 
while [ 1 -eq 1 ] 
do 
     ping -c 1 $1 >/dev/null 2>&1 && pingSuccess=1 
     [ ${pingSuccess} -eq 1 ] && echo "got the successful ping. " && break 
     echo "ping failed. sleeping for 5 secs" && sleep 5 
done 
echo "exitting.."; exit 0 
+0

hello.were是否插入我想ping的IP /計算機名稱? – Tomas