如何每 X 分钟执行一次 ping 并检查响应时间?

Waz*_*_Be 31 windows ping infinite-loop batch-file

我目前在一家大公司工作,我们有严重的延迟问题。这发生在过程控制系统中,是不可接受的(打开阀门有时需要在命令启动前 2 分钟)

当网络团队说“网络上一切正常”时,我想仔细检查一下。所以,我想创建一个循环来 ping 服务器并将结果写入文本文件。

我不是批处理专家,但您认为这段代码使用正确吗?

@ECHO OFF

:LOOPSTART

time /T
ping xxx.xx.x.x  -t >> filename.txt
sleep -m 3000

GOTO LOOPSTART
Run Code Online (Sandbox Code Playgroud)

mek*_*all 37

对我来说看起来不错,但是如果您想连续 ping IP,则无需循环它。然后你可以简单地这样做:

@ECHO OFF
set IPADDRESS=x.x.x.x
ping %IPADDRESS% -t >> filename.txt
Run Code Online (Sandbox Code Playgroud)

如果您想每 X 分钟 ping 一次,请使用循环:

@ECHO OFF
set IPADDRESS=x.x.x.x
set INTERVAL=60
:PINGINTERVAL
ping %IPADDRESS% -n 1 >> filename.txt
timeout %INTERVAL%
GOTO PINGINTERVAL
Run Code Online (Sandbox Code Playgroud)

如您所见,我将sleep命令替换为timeout. 那是因为sleep在某些系统上并不总是可用,而timeout通常是。

系统上缺少命令sleeptimeout命令?别担心。只需替换timeout为以下 hack:

@ping 127.0.0.1 -n %INTERVAL% > nul
Run Code Online (Sandbox Code Playgroud)

这个 hack 只是 ping 你的本地地址,因为它会立即响应,我们可以用它来模拟执行延迟。


Rob*_*ath 10

我知道这是一个 Windows 问题(而且是一个老问题),但也许它与 Linux 和 OSX 类似。这是当我寻找一个简单的命令来保持笔记本电脑上的网络流量时出现的第一件事。可能对寻找类似东西的人有用。

在 bash 脚本中:

WAITSECONDS=30 #or whatever your needs are
IPTOPING=8.8.8.8 #or whatever your needs are
ping -i ${WAITSECONDS} ${IPTOPING} > logfile
Run Code Online (Sandbox Code Playgroud)

每 30 秒单行 ping 一次 google dns:

ping -i 30 8.8.8.8 > logfile
Run Code Online (Sandbox Code Playgroud)

适用于 OSX 和 Linux,应该是相当标准的,但不知道你在什么系统上。

  • 也许在 cygwin 中.. cygwin 允许您在 Windows 中使用 bash (2认同)