You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派Debian Buster上实时提取日志中query[A]相关信息

实时提取DNS查询日志的实现方案(树莓派Debian Buster)

嘿,我来帮你搞定这个实时日志提取的需求!在树莓派的Debian Buster系统上,我们可以用tail+awk的组合轻松实现,比单独折腾sed要高效得多,而且完全满足实时输出的要求。

直接可用的命令

你只需要在终端里运行这条命令就行:

tail -f /home/pi/test.txt | awk '/query\[A\]/ {split($3, time, ":"); print time[1] ":" time[2], $6}'

命令拆解说明

我给你拆解开每个部分,方便你理解和调整:

  • tail -f /home/pi/test.txt:tail -f是实时跟踪文件新增内容的神器,它会持续监控test.txt,一旦有新日志写入就立刻输出,完美替代手动轮询的逻辑。
  • awk '/query\[A\]/':awk会过滤出包含query[A]的行,这里的\[和\]是转义符,因为方括号在正则表达式里是特殊字符,必须转义才能匹配字面意义的query[A]。
  • split($3, time, ":"):把日志行的第3个字段(也就是时间部分,比如11:43:24)按冒号分割成数组time,time[1]就是小时,time[2]是分钟。
  • print time[1] ":" time[2], $6:输出拼接好的时分(比如11:43)和第6个字段(也就是你要的URL,比如captive.g.aaplimg.com),正好符合你想要的格式。

额外实用扩展

如果需要把实时输出同时保存到另一个文件(比如后续分析用),可以加个tee命令:

tail -f /home/pi/test.txt | awk '/query\[A\]/ {split($3, time, ":"); print time[1] ":" time[2], $6}' | tee /home/pi/dns_queries.log

要是希望这个监控进程在后台持续运行(哪怕关闭终端也不停止),可以用nohup:

nohup tail -f /home/pi/test.txt | awk '/query\[A\]/ {split($3, time, ":"); print time[1] ":" time[2], $6}' > /home/pi/dns_queries.log 2>&1 &

之后可以用ps aux | grep tail查看进程,用kill命令终止它。

格式适配提示

如果你的日志行格式有变化(比如URL不在第6个字段),只需要把命令里的$6改成对应的字段序号就行。比如你可以先运行cat /home/pi/test.txt | awk '/query\[A\]/ {print $0}'查看完整行,数清楚URL是第几个字段。

内容的提问来源于stack exchange,提问作者Kallum R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 14:22:44