检查 ping 回复 - 意外结果

检查 ping 回复 - 意外结果

我在 Windows XP 批处理文件中运行此文件:

ping -n 3 10.1.1.2 >nul: 2>nul:
if %errorlevel%==0 (
    echo ping reply arrived        
) else (
    echo no ping reply.
)

有时,似乎我没有收到 ping 回复,尽管在并行的 cmd 行窗口中运行

ping  10.1.1.2 -t

我检查的方式是否错误?

答案1

也许重新考虑一下为什么要以这种方式测试连通性(我假设这就是你正在做的事情?)。 Ping 不是确定主机连通性的可靠方法:

  • Ping 是 ICMP,在不同的网络设备上可能会有不同的结果,因此不能保证总是以相同的方式做出反应
  • 它可能受到速率限制,因此有时不会返回任何结果
  • 丢包、延迟或一般数据包丢失都可能导致 ping 不返回;甚至可能被 QoS 丢弃
  • Ping 不描述路由环境或除端到端/主机之外的任何问题

也许你应该重新考虑一下你正在尝试做什么?如果你给我们更多信息,我相信我们可以提供一些更可靠的建议。

编辑:以下批处理脚本对我有用。

@echo off
ping -n 3 192.168.0.4 >nul: 2>nul:
if %ERRORLEVEL% EQU 0 (
    echo ok
) else (
    echo not ok
)

相关内容