如何从 tcpdump 捕获输出

Jay*_*Jay 5 command-line

我想捕获 tcpdump 的输出并将其用作第二个命令的输入。顺便说一下,我不想使用 pcap 格式!

我试过

sudo tcpdump -q ip > ./out.txt
Run Code Online (Sandbox Code Playgroud)

当我查看文件时,我看到整个 STDOUT 一直被写入文件,但我希望文件只会被新内容覆盖。写入终端时是否所有 STDOUT 都被缓冲或清除?

  • 有没有办法只能从 STDOUT 读取部分更新?
  • 如何将输出从 tcpdump 连续重定向到其他 cmd?

这行得通吗?

sudo tcpdump -q ip | my_command
Run Code Online (Sandbox Code Playgroud)

A.B*_*.B. 3

要始终用每个新行覆盖文件tcpdump

sudo tcpdump -l -q ip | awk '{system("echo " $0 " > out")}'
Run Code Online (Sandbox Code Playgroud)

将输出用于其他命令,例如awk


man tcpdump

   -l     Make  stdout  line  buffered.
          Useful if you want to see the data while capturing it.
          E.g.,
                 tcpdump -l | tee dat
          or
                 tcpdump -l > dat & tail -f dat
Run Code Online (Sandbox Code Playgroud)