
Estou tentando capturar o tráfego do MySQL e passá-lo para o comando strings da seguinte maneira:
tcpdump -i any -s 0 -l -w - dst port 3306 | strings
Isso está funcionando conforme o esperado e imprimindo todas as consultas mysql como
select * from mytables
show databases
Mas quando tento redirecionar a saída para um arquivo, não estou imprimindo a saída no /tmp/out
arquivo:
tcpdump -i any -s 0 -l -w - dst port 3306 | strings > /tmp/out
Alguém pode me explicar o comportamento do comando acima e por que ele não está redirecionando a saída para o arquivo.
Responder1
Eu tenho a solução:
Na verdade, o comando strings está armazenando em buffer. Desativei o buffer usando
stdbuf -i0 -o0 -e0 command
Então, depois de alterar todo o comando para o seguinte, a saída começou a ir para o arquivo /tmp/final.
tcpdump -i any -s 0 -l -w - dst port 3306 | stdbuf -i0 -o0 -e0 strings > /tmp/final