并行运行 tshark 并查找 + 严格按时间排序的输出

并行运行 tshark 并查找 + 严格按时间排序的输出

我正在尝试获取调试输出

  1. “find” 的作用
  2. 与网络上发生的情况相比(tshark)

因此我想并行运行这些命令并按时间对输出进行细致排序。

我这样做:

{
stdbuf -oL tshark -tad -l -n -s 9999 host x | ts '[TSRK %Y-%m-%d %H:%M:%.S]' &
sleep 5
stdbuf -oL find . -type d 2>&1 | ts '[FIND %Y-%m-%d %H:%M:%.S]' &
} >/root/out

主要问题:Tshark 输出滞后

# stdbuf -oL tshark -tad -l -n | ts '[TSRK %Y-%m-%d %H:%M:%.S]'
[TSRK 2021-08-18 17:40:56.206744]     2 2021-08-18 17:40:55.477802058 00:04:96:xx:xx:xx → ff:ff:ff:ff:ff:ff ARP 64 Who has 172.31.x.x? Tell 172.31.x.x

将 ts ( ) 的时间戳[TSRK 2021-08-18 17:40:56.206744]与 tshark ( 2021-08-18 17:40:55.477802058)的时间戳进行比较

输出滞后。组合日志在显示 tshark 的输出之前输出 find 的结果。而显然,网络活动必须先于 的结果find

我也尝试过parallel

parallel --line-buffer ::: \
'stdbuf -oL tshark -tad -l -n -s 9999 host x | ts "[TSRK %Y-%m-%d %H:%M:%.S]" ' \
'stdbuf -oL find . -type d | ts "[FIND %Y-%m-%d %H:%M:%.S]" ' \
>/root/outpar

但外部工具似乎无法修复内部工具明显的错误......结果是一样的。

我该如何正确地做到这一点?

相关内容