Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 是否每5秒将批处理脚本ping到远程计算机?_Loops_Batch File_Ping_Repeat - Fatal编程技术网

Loops 是否每5秒将批处理脚本ping到远程计算机?

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>

我正在尝试创建一个脚本,每隔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>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