У меня есть следующая команда (из соображений конфиденциальности я изменил ip на 8.8.8.8):
tcpdump -i eth0 -nn udp portrange 27950-27970 и dst 8.8.8.8 | grep 'length 16 $'> testfile
Довольно прямо. Я хочу, чтобы все входящие пакеты длиной 16 записывались в файл, но по очень странной причине он не работает.
tcpdump -i eth0 -nn udp portrange 27950-27970 и dst 8.8.8.8 | grep 'длина 16 $'
Эта команда работает нормально и отображает именно то, что я хочу, но не в файле. Так что я уверен, что пакеты есть. Когда я использую ту же команду, но с длиной 34, как это:
tcpdump -i eth0 -nn udp portrange 27950-27970 и dst 8.8.8.8 | grep 'length 34 $'> testfile
Это записывает его в файл, а не в те пакеты, которые я хочу. Почему одна и та же команда работает с 34, а не с 16? Что такого особенного в 16? Я совершенно сбит с толку, потому что это кажется мне невозможным.
Первоначально я хотел снова передать команду в sed. Но конвейер также не работает с номером 16. Если я изменю «> testfile» на «| grep 8.8.8.8», то я не получу никакого вывода, и снова с 34 я получу вывод.
Может ли кто-нибудь из вас понять все это? Я наткнулся на очень странную ошибку? Я пытался и гуглил часами, но не повезло.
Заранее большое спасибо.