comportamento estranho do comando strings

comportamento estranho do comando strings

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/outarquivo:

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 

Referências

informação relacionada