Loops 是否每5秒将批处理脚本ping到远程计算机?
我正在尝试创建一个脚本,每隔5秒或10秒ping一次远程计算机,以查看它在重新启动后是否重新联机 我有这个代码,似乎工作,但垃圾邮件像疯了,我只需要它检查每5秒左右 一个额外的好处是,一旦连接成功,它就会停止循环Loops 是否每5秒将批处理脚本ping到远程计算机?,loops,batch-file,ping,repeat,Loops,Batch File,Ping,Repeat,我正在尝试创建一个脚本,每隔5秒或10秒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>
@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
未进行测试,但这应该可以工作:
@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
致:
并将IP地址作为批处理文件的参数
另外,请确保无法访问IP 1.0.0.1,它用于创建超时。以下是我将如何执行此操作
@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
@echo关闭
setlocal
:又一次
设置/a inc+=5
设置“ip=xx.xx.xx.xx”
呼叫:IsPingable%ip%&&(
Echo%ip%处于联机状态
) || (
回显%ip%尚未联机。
ping 127.0.0.1-N1-W5000>nul
后藤:再打一次)
退出/b
:IsPingable
ping-n1-w3000-4-l8“%~1”| Find“TTL=“>nul
退出/b
我想下面是解决您问题的好办法。试试这个脚本,让我知道tat是否有效
#!/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
正是我需要的!我只是在末尾添加了一个“pause>nul”,这样当收到响应时它不会关闭。hello.We我是否要插入我要o ping的IP/计算机名?
@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
#!/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