我一直在尝试计算我的机器每分钟接收 ICMP 请求的频率。
我尝试使用 tcpdump 并将结果保存到文本文件中,然后 grep 时间戳以计算它们之间的差异,但这只会导致大量延迟。
我的方法是:
tcpdump -i eth1 icmp[0]==8 | tee abc.txt
grep -Eo '^[^ ]+' abc.txt
perl -e 'open$T,pop;while(1){while(<$T>){ ++$f{$_}>10 and print "[$f{$_}]$_" for /(\d+:\d+)/ }sleep 1;seek $T,0,1}' abc.txt
有没有一种方法可以在不使用任何文件的情况下计算在我的机器上接收到的 ICMP 请求的频率?
我正在从一台机器 ping 到另一台机器,想计算接收端接收到 ping 的频率。
最佳答案
您可以将 tcpdump 包装在脚本中,不涉及文件。请注意 tcpdump 的 -l
选项,它表示执行行缓冲。如果您将其排除在外,您将获得缓冲输出,这可能不是您想要的。
sout = IO.popen("sudo tcpdump -l -i any icmp[0]==8 2>&1")
line = sout.gets
while (!line.nil?)
p line
#fiddle with line and do time
line = sout.gets
end
关于ruby - 如何计算 Linux 机器接收 ICMP 请求的频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17662979/