实时显示Ping替换


9

除了往返时间和序列号之外,是否还有ping替代品将显示系统的日期/时间?我更喜欢在Linux上运行的工具,但是如果有cli工具,我也可以在Windows上运行,那也很好。

有一个系统正在间歇地暂停用户正在报告。这似乎在任何一致的时间都不会发生。我无法让报告用户以足够的特异性告诉事件发生的时间,从而无法将暂停与任何日志相关联。

一名技术人员对主机进行了一天的ping操作。往返时间在某个时间点变得相当大。我试图弄清楚什么时候会发生这种情况,以便缩小我应该查看的日志条目的范围,并可能将此暂停与我可能能够通过性能日志,设备日志等收集的其他数据相关联。

64 bytes from 10.2.4.241: icmp_seq=1825 ttl=64 time=0.321 ms
64 bytes from 10.2.4.241: icmp_seq=1826 ttl=64 time=0.371 ms
64 bytes from 10.2.4.241: icmp_seq=1827 ttl=64 time=13937.638 ms
64 bytes from 10.2.4.241: icmp_seq=1828 ttl=64 time=12937.526 ms
64 bytes from 10.2.4.241: icmp_seq=1829 ttl=64 time=11937.392 ms
64 bytes from 10.2.4.241: icmp_seq=1830 ttl=64 time=10937.275 ms
...
64 bytes from 10.2.4.241: icmp_seq=1840 ttl=64 time=936.073 ms
64 bytes from 10.2.4.241: icmp_seq=1841 ttl=64 time=0.410 ms

Answers:


12

您可以使用perl添加时间戳,如下所示:

ping 127.0.0.1 | perl -pe 'BEGIN {use POSIX;} print strftime("%Y-%m-%d %H:%M:%S ", localtime)'

1
那太简单了!:)我搜索了将近30分钟,但效果不佳,谢谢!
l0c0b0x

12

这是一个bash解决方案:)

$ ping本地主机| 边读行; 做echo -e“ $(date)\ t $ line”; 做完了
Tue Nov 3 04:46:26 MSK 2009 PING localhost(127.0.0.1)56(84)字节数据。
Tue Nov 3 04:46:26 MSK 2009来自本地主机(127.0.0.1)的64个字节:icmp_seq = 1 ttl = 64 time = 0.033 ms
Tue Nov 3 04:46:27 MSK 2009来自本地主机(127.0.0.1)的64个字节:icmp_seq = 2 ttl = 64 time = 0.040 ms
Tue Nov 3 04:46:28 MSK 2009来自本地主机(127.0.0.1)的64个字节:icmp_seq = 3 ttl = 64 time = 0.046 ms
Tue Nov 3 04:46:29 MSK 2009来自本地主机(127.0.0.1)的64个字节:icmp_seq = 4 ttl = 64 time = 0.046 ms

现在,让date命令生成更漂亮的输出:

$ ping本地主机| 边读行; 做echo -e“ $(date +%H:%I:%S)\ t $ line”; 做完了
04:04:13 PING本地主机(127.0.0.1)56(84)字节数据。
04:04:13来自本地主机(127.0.0.1)的64个字节:icmp_seq = 1 ttl = 64 time = 0.044 ms
04:04:14来自本地主机(127.0.0.1)的64个字节:icmp_seq = 2 ttl = 64 time = 0.039 ms
04:04:15来自本地主机(127.0.0.1)的64个字节:icmp_seq = 3 ttl = 64 time = 0.042 ms

干杯!


Pedantic:我不会说本机,因为date命令是一个外部命令,而不是内置在bash中。我仅指出这一点,因为如果您不知道(您可能知道,我不知道),那么意识到内置命令和非内置命令很重要。仍然是一个不错的解决方案:-)
凯尔·布​​兰特

1
也不需要while [ 0 ]ping google.com | while read line; do echo -e "$(date) $line"; done
凯尔·布​​兰特

5

我们用来定期检查延迟和数据包丢失的“更重”选项是Smokeping。它不仅以一种易于阅读的格式为您提供了更多信息,而且您还可以执行HTTP和DNS检查之类的事情,而不必依赖ICMP。许多防火墙和路由器都会取消对ICMP的优先级设置,从而导致错误的延迟测量。

抽烟


很棒的工具,虽然比脚本重,但仅设置用于监视各种系统也可能很好。
sclarson

2

对于Linux,安装moreutils它会给你ts

$ ping nu.nl | ts
jan 29 14:39:51 PING nu.nl (62.69.166.254) 56(84) bytes of data.
jan 29 14:39:51 64 bytes from 62-69-166-254.ptr.as24646.net (62.69.166.254): icmp_seq=1 ttl=247 time=29.8 ms
jan 29 14:39:52 64 bytes from 62-69-166-254.ptr.as24646.net (62.69.166.254): icmp_seq=2 ttl=247 time=29.4 ms

0

让我们使用shell内置printf%(datefmt)T格式规范,以避免调用较重的口译或产生新的一date对每一行的过程。

ping -c4 localhost | while read line; do printf "%([%Y-%m-%dT%H:%M:%S])T %s\n" "-1" "$line"; done

像perl示例一样,这也可以通过管道传输sed和awk来完成。我认为这ts是最简单的,但是我们的服务器上没有。对于busybox之类的环境也是如此。

如果您的命令缓冲其输出,则可以使用unbuffer

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.