seltsames Verhalten des String-Befehls

seltsames Verhalten des String-Befehls

Ich versuche, MySQL-Verkehr zu erfassen und diesen Verkehr wie folgt an den String-Befehl weiterzuleiten:

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

Dies funktioniert wie erwartet und druckt alle MySQL-Abfragen wie

select * from mytables
show databases

Aber wenn ich versuche, die Ausgabe in eine Datei umzuleiten, wird sie nicht in die /tmp/outDatei gedruckt:

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

Kann mir jemand das Verhalten des obigen Befehls erklären und warum die Ausgabe nicht in eine Datei umgeleitet wird?

Antwort1

Ich habe die Lösung:

Tatsächlich puffert der Befehl strings. Ich habe die Pufferung deaktiviert, indem ich

stdbuf -i0 -o0 -e0 command

Nachdem ich den gesamten Befehl wie folgt geändert hatte, wurde die Ausgabe in die Datei /tmp/final gesendet.

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

Verweise

verwandte Informationen