如何在 ping 中使用时间戳选项

如何在 ping 中使用时间戳选项

我注意到 ping 帮助中有一个时间戳选项 -T。但我不知道如何使用它。

我试过:

ping www.google.com -T

这是我得到的:

Invalid timestamp type

时间戳类型是什么以及如何使用它?

答案1

-T选项用于要求跳数在收到 ping 后在 IP 数据包中插入时间戳。它通过使用TSIP 数据包的选项来工作,由RFC791

ping -T需要一个参数:以下之一tsonlytsandaddr或者tsprespec。您可以阅读手册页在线的或通过运行man ping获取有关使用方法的更多信息。

以下是一个使用示例:

$ ping -T tsandaddr 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(124) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=3.22 ms
TS:     192.168.1.3 63668917 absolute
    192.168.1.1 534841740 absolute not-standard
    192.168.1.1 1 not-standard
    192.168.1.3 3

64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=6.59 ms
TS:     192.168.1.3 63669919 absolute
    192.168.1.1 534842745 absolute not-standard
    192.168.1.1 0 not-standard
    192.168.1.3 6

64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=3.20 ms
TS:     192.168.1.3 63670920 absolute
    192.168.1.1 534843743 absolute not-standard
    192.168.1.1 1 not-standard
    192.168.1.3 3

^C
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 3.207/4.343/6.599/1.595 ms

请注意,我已在我的 LAN 上尝试过。互联网上的某些跳数可能会拒绝带有时间戳选项的 IP 数据包。(事实上,我无法 ping 任何带有 的互联网主机-T,可能是我的 ISP 拒绝了我的数据包。)

答案2

或者,如果您想记录链接或主机的正常运行时间,您可能需要带有时间戳的单行响应,例如:

ping -i 10 google.com | while read pong; do echo "$(date): $pong"; done 

这将每十秒发送一次 ping,然后-i 10将其通过管道传输到文件,例如 add > /tmp/ping_google.log。输出如下:

Sat Jan 22 07:34:08 AEDT 2022: PING google.com (172.217.6.78) 56(84) bytes of data.
Sat Jan 22 07:34:08 AEDT 2022: 64 bytes from sfo07s17-in-f78.1e100.net (172.217.6.78): icmp_seq=1 ttl=118 time=2.27 ms
Sat Jan 22 07:34:18 AEDT 2022: 64 bytes from sfo07s17-in-f78.1e100.net (172.217.6.78): icmp_seq=2 ttl=118 time=1.32 ms
Sat Jan 22 07:34:28 AEDT 2022: 64 bytes from sfo07s17-in-f78.1e100.net (172.217.6.78): icmp_seq=3 ttl=118 time=1.34 ms
...

希望这对某人有帮助。

相关内容