comportamiento extraño del comando de cadenas

comportamiento extraño del comando de cadenas

Estoy intentando capturar el tráfico de MySQL y pasarlo al comando de cadenas de la siguiente manera:

tcpdump -i any -s 0 -l -w - dst port 3306 | strings

Esto funciona como se esperaba e imprime todas las consultas de MySQL como

select * from mytables
show databases

Pero cuando intento redirigir la salida a un archivo, no imprime la salida en /tmp/outel archivo:

tcpdump -i any -s 0 -l -w - dst port 3306 | strings > /tmp/out

¿Alguien puede explicarme el comportamiento del comando anterior y por qué no redirige la salida al archivo?

Respuesta1

Tengo la solución:

En realidad, el comando de cadenas está almacenando en búfer. Deshabilité el almacenamiento en búfer usando

stdbuf -i0 -o0 -e0 command

Entonces, después de cambiar todo el comando a lo siguiente, la salida comenzó a ir al archivo /tmp/final.

tcpdump -i any -s 0 -l -w - dst port 3306 | stdbuf -i0 -o0 -e0 strings > /tmp/final 

Referencias

información relacionada