Я хотел бы захватить вывод 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