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