使用超时并在后台运行 ping 并将统计信息保存到文件

使用超时并在后台运行 ping 并将统计信息保存到文件

我正在编写一个脚本来自动进行 ping 测试。因为我有数百个端点相互 ping,并且我不希望脚本因为 ping 卡住而停止运行,所以我使用超时,并在后台运行 ping。我还想将 ping 统计信息保存到文件中。首先我尝试了以下命令:

timeout 20s ssh hostA "ping -c 30 -I 192.6.2.50 192.6.2.28 " | awk '{print "from 50 to 28 |",$0;}' &

我得到的结果显示在屏幕上,这正是我所期望的:

from 50 to 28 | PING 192.6.2.28 (160.6.24.28) from 192.6.2.50 : 56(84) bytes of data.
from 50 to 28 | 64 bytes from 192.6.2.28: icmp_seq=1 ttl=64 time=0.264 ms
from 50 to 28 | 64 bytes from 192.6.2.28: icmp_seq=2 ttl=64 time=0.245 ms
from 50 to 28 | 64 bytes from 192.6.2.28: icmp_seq=3 ttl=64 time=0.220 ms
from 50 to 28 | 64 bytes from 192.6.2.28: icmp_seq=4 ttl=64 time=0.214 ms
from 50 to 28 | 64 bytes from 192.6.2.28: icmp_seq=5 ttl=64 time=0.123 ms
....
Killed by signal 15.

但是当我尝试将此输出保存在文件中时,它失败了,下面是我使用的命令:

timeout 20s ssh cic-1 "ping -c 30 -I 192.6.2.50 192.6.2.28 " | awk '{print "from 50 to 28",$0;}' | tee -i -a path/timeout_test.txt &

但我在 timeout_test.txt 中什么也没有

我还尝试了下面的命令,我在命令运行之前创建了 timeout_test.txt 。

timeout 20s ssh cic-1 "ping -c 30 -I 192.6.2.50 192.6.2.28 " | awk '{print "from 50 to 28",$0;}' >> path/timeout_test.txt &

但我还是一无所获。

答案1

也许我首先会想到您正在 SSH 服务器/远程 PC 上运行 ping 命令,因此结果应该由 tee -a 命令用于该远程上的文件。顺便说一句,我宁愿使用中间文件,然后处理日志结果,而不是在一个 shell 行中删除/管道传输所有内容。

相关内容