我想使用tcpdump提取数据包的时间戳并将其放入文件中,以便最新的时间戳替换第一行(该行为空或包含倒数第二个数据包的时间戳) 。 文件应该只有1行条目即必需。最新数据包的时间戳。
这就是我所做的:
sudo tcpdump -i eth0 -l | cut -d . -f1 > test.txt
cat test.txt
16:08:04
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
但我想要的只是最新的时间戳:
cat test.txt
16:08:05
任何想法?
答案 0 :(得分:2)
从我测试的内容来看,您的脚本看起来会永远运行,您可能需要在另一个进程中看到最后一个数据包,不是吗?
$ cat test.txt
16:08:04
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
如果您只想要最新的数据包(即最后一行),请尝试
$ tail -1 test.txt
16:08:05
如果您想与其他数据包一起查看最新的数据包,请尝试
$ tail -1 test.txt > tmp_out; cat test.txt >> tmp_out; cat tmp_out
16:08:05
16:08:04
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
答案 1 :(得分:0)
使用awk你可以这样做:
sudo tcpdump -i en0 -l -c 5 2>/dev/null | awk -F'\\.' '$1~/^[012][0-9]:/{p=$1}
END{print p > "output"}'
cat output
08:27:51
这将获得最大时间戳并将其存储在名为output
的文件中。