Bash t将DNS共享到日志文件

Bash t将DNS共享到日志文件,bash,tee,tshark,Bash,Tee,Tshark,我正在尝试将此命令输出到日志文件。。当我使用tee命令时,它直接进入tshark帮助屏幕,没有tee命令,它会正确地将DNS行打印到屏幕上。如何正确记录此屏幕 sudo tshark-i enp2s0-f“src port 53”-n-T字段-e ip.dst-e dns.qry.name-e dns.a-w | tee-a logfile.log 您正在使用一个日志文件并使用-T字段,因此预期的输出是文本。 问题是您使用的是-w,这会将输出更改为数据包位。Per: -w|- 将原始数据包数据写

我正在尝试将此命令输出到日志文件。。当我使用tee命令时,它直接进入tshark帮助屏幕,没有tee命令,它会正确地将DNS行打印到屏幕上。如何正确记录此屏幕

sudo tshark-i enp2s0-f“src port 53”-n-T字段-e ip.dst-e dns.qry.name-e dns.a-w | tee-a logfile.log


您正在使用一个日志文件并使用-T字段,因此预期的输出是文本。 问题是您使用的是
-w
,这会将输出更改为数据包位。Per:

-w|-
将原始数据包数据写入outfile或标准输出(如果outfile为“-”)。
注:-w提供原始数据包数据,而不是文本。如果您想要文本输出,您需要
要重定向stdout(例如使用“>”),请不要为此使用-w选项。

第二个问题是,您正在指定
-w
,而没有同时指定输出文件或stdin。如果删除
-w
标志,则tshark不会出现任何语法错误。

tshark文档对日志文件有何说明?谢谢!我忽略了“-w”它现在可以正常工作了!
-w <outfile> | -
  Write raw packet data to outfile or to the standard output if outfile is '-'.

  NOTE: -w provides raw packet data, not text. If you want text output you need 
  to redirect stdout (e.g. using '>'), don't use the -w option for this.