Как захватить вывод tcpdump

Как захватить вывод tcpdump

Я хотел бы захватить вывод tcpdump и использовать его как ввод для второй команды. Кстати, я не хочу использовать формат pcap!

Я пытался

sudo tcpdump -q ip > ./out.txt

Когда я смотрел файл, я видел, что весь STDOUT все время записывался в файл, но я ожидал, что файл будет перезаписан только новым содержимым. Весь STDOUT буферизируется или очищается при записи в терминал?

  • Есть ли способ прочитать только частичные обновления из STDOUT?
  • Как можно непрерывно перенаправлять вывод из tcpdump в другой cmd?

Это работает ?

sudo tcpdump -q ip | my_command

решение1

Чтобы всегда перезаписывать файл каждой новой tcpdumpстрокой:

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

Чтобы использовать вывод для другой команды, напримерawk

  • $3= только 3-й столбец

    sudo tcpdump -l -q ip | awk '{print $3}'
    
  • Сортировать поtcp

    sudo tcpdump -l -q ip | awk '/tcp/ {print $0}'
    
  • Или комбинация:

    sudo tcpdump -l -q ip | awk '/tcp/ {"echo " $0 " > out"}'
    

от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

Связанный контент