Gostaria de capturar a saída do tcpdump e usá-la como entrada para um segundo comando. A propósito, não quero usar o formato pcap!
tentei
sudo tcpdump -q ip > ./out.txt
Quando observei o arquivo, vi que todo o STDOUT estava gravado no arquivo o tempo todo, mas esperava que o arquivo fosse substituído apenas pelo novo conteúdo. Todo o STDOUT é armazenado em buffer ou limpo quando gravado no terminal?
- Existe uma maneira de ler apenas as atualizações parciais do STDOUT?
- Como posso redirecionar a saída continuamente do tcpdump para outro cmd?
Isto funciona ?
sudo tcpdump -q ip | my_command
Responder1
Para sempre sobrescrever o arquivo a cada nova tcpdump
linha:
sudo tcpdump -l -q ip | awk '{system("echo " $0 " > out")}'
Para usar a saída para outro comando, por exemploawk
$3
= apenas a 3ª colunasudo tcpdump -l -q ip | awk '{print $3}'
Filtrar por
tcp
sudo tcpdump -l -q ip | awk '/tcp/ {print $0}'
Ou uma combinação:
sudo tcpdump -l -q ip | awk '/tcp/ {"echo " $0 " > out"}'
deman 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