странное поведение команды strings

странное поведение команды strings

Я пытаюсь перехватить трафик MySQL и передать этот трафик в строку команды следующим образом:

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

Это работает так, как и ожидалось, и выводит все запросы MySQL, такие как

select * from mytables
show databases

Но когда я пытаюсь перенаправить вывод в файл, вывод не печатается в /tmp/outфайл:

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

Может ли кто-нибудь объяснить мне поведение вышеуказанной команды и почему она не перенаправляет вывод в файл.

решение1

Я нашел решение:

На самом деле команда strings буферизуется. Я отключил буферизацию с помощью

stdbuf -i0 -o0 -e0 command

Итак, после изменения всей команды на следующую, вывод начал поступать в файл /tmp/final.

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

Рекомендации

Связанный контент