【问题标题】:Batch script to ping remote computer every 5 seconds?每 5 秒 ping 一次远程计算机的批处理脚本?
【发布时间】:2014-04-07 13:04:00
【问题描述】:

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

【问题讨论】:

    标签: loops batch-file ping repeat


    【解决方案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
    

    【讨论】:

    • 正是我需要的!我只是在最后添加了一个“pause >nul”,所以当它得到响应时它不会关闭。
    【解决方案2】:

    我猜,下面将是您问题的最佳解决方案。试试这个脚本,让我知道 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
    

    【讨论】:

    • hello.were 我要插入我要 ping 的 IP/计算机名称吗?
    【解决方案3】:

    没有测试,但这应该可以:

    @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 不可访问,它用于创建超时。

    【讨论】:

      【解决方案4】:

      我会这样做。

      @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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多