
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/out
el 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