32 线量子的 TSHARK 和 AWK 输出

tshark and awk outputs in 32 line quantums

提问人:Gambanishu Habbeba 提问时间:3/23/2022 最后编辑:Gambanishu Habbeba 更新时间:3/23/2022 访问量:132

问:

我正在运行 tshark 来捕获东西,然后将输出管道到 awk 中以对其进行一些处理。当我在没有 awk 的情况下运行 tshark 命令时,我会在终端中看到输出。当我将它输送到 awk 中时(我在 tshark 上使用 -l),实际上它在这里:我看到计数器随着包裹的进入而上升,但什么也没发生。当它达到 32 时,突然出现前 32 行,然后什么也没发生。我们能摆脱这种奇怪的行为吗?tshark -i wlan1 -l subtype probereq | awk -f ./blah.awk

好的,所以 tshark 示例输出在几秒钟后:

Running as user "root" and group "root". This could be dangerous.
Capturing on 'wlan1'
    1 0.000000000 0c:08:b4:07:1c:41 → ff:ff:ff:ff:ff:ff 802.11 288 Probe Request, SN=100, FN=0, Flags=........, SSID=gigacube-E7CA
    2 9.709432337 0c:08:b4:07:1c:41 → ff:ff:ff:ff:ff:ff 802.11 288 Probe Request, SN=117, FN=0, Flags=........, SSID=gigacube-E7CA
    3 9.969377335 0c:08:b4:07:1c:41 → ff:ff:ff:ff:ff:ff 802.11 288 Probe Request, SN=119, FN=0, Flags=........, SSID=gigacube-E7CA

AWK 文件:

BEGIN {
        OFS = ",";
}
{
        print $3, substr($13, 6);
}

awk 脚本在 tshak 命令输出上的输出 如果我首先将 tshark 输出发送到文件中:

0c:08:b4:07:1c:41,gigacube-E7CA
0c:08:b4:07:1c:41,gigacube-E7CA
0c:08:b4:07:1c:41,gigacube-E7CA
66:3c:76:d8:29:b2,Wildcard
66:3c:76:d8:29:b2,Wildcard
66:3c:76:d8:29:b2,Wildcard
66:3c:76:d8:29:b2,Wildcard

...不出所料。

但只输出计数器大约一分钟 - 直到它达到大约 32 行,然后一起输出大约 30 行。我想要两件事:tshark -i wlan1 -l -n subtype probereq | awk -f ./blah.awk

  • 无计数器
  • 连续输出,因为它来自 Tshark
linux awk tshark

评论

0赞 Gambanishu Habbeba 3/23/2022
此外,它要么打印计数器,要么如果我使用 -q 或 -Q,它根本不会输出任何内容。:(
1赞 William Pursell 3/23/2022
这不是“奇怪的行为”,它只是缓冲。默认情况下,tty 的输出是行缓冲的,管道的输出是块缓冲的。有一些解决方法。(,也许是一面旗帜stdbuftshark)
0赞 Christopher Maynard 3/23/2022
为什么不直接使用和完全放弃呢?tshark -i wlan1 -Y "wlan.ssid" -T fields -e wlan.sa -e wlan.ssidawk

答: 暂无答案