我注意到 ping 帮助中有一个时间戳选项 -T。但我不知道如何使用它。
我试过:
ping www.google.com -T
这是我得到的:
Invalid timestamp type
时间戳类型是什么以及如何使用它?
答案1
该-T
选项用于要求跳数在收到 ping 后在 IP 数据包中插入时间戳。它通过使用TS
IP 数据包的选项来工作,由RFC791。
ping -T
需要一个参数:以下之一tsonly
,tsandaddr
或者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
...
希望这对某人有帮助。