Я хочу захватить некоторый трафик с помощью tcpdump для устранения неполадок. Проблема в том, что ошибка не воспроизводится. Чтобы не заполнять дырочные диски захватами, я бы хотел захватить трафик каким-то скользящим окном.
Допустим, я записываю захват в файл, и когда файл достигает размера 1 ГБ, он отбрасывает самые старые пакеты и записывает новые. Таким образом, я получу трафик только на несколько часов, но, надеюсь, достаточно, чтобы получить нужные пакеты, когда пользователь звонит.
Я не мог найти вариант для tcpdump. Есть у кого-нибудь идеи, как это решить?
В этом вам может помочь параметр -c:
-c Exit after receiving count packets.
Таким образом, вы получите круговой файл traffic.dmp:
while :
do
tcpdump -i eth0 -c 50000 -C 1 -w traffic.dmp
done
Если вы поместите его в цикл for, вы можете получить серию файлов:
for file in 1 2 3 4 5
do
tcpdump -i eth0 -c 50000 -C 1 -w traffic${file}.dmp
done
. Просто измените числа после того, как вы определите какое-то число, которое не слишком велико для вашего диска, чтобы захватывать несколько часов пакетов.
-C тоже интересно смотрится:
-C Before writing a raw packet to a savefile, check whether the
file is currently larger than file_size and, if so, close the
current savefile and open a new one. Savefiles after the first
savefile will have the name specified with the -w flag, with a
number after it, starting at 1 and continuing upward. The units
of file_size are millions of bytes (1,000,000 bytes, not
1,048,576 bytes).
Если вы настаиваете на использовании tcpdump, ответ Дэви правильный. Однако есть и другие пакеты захвата, создающие файлы pcap, с дополнительными возможностями для такого рода работы. Отметим:
tshark, часть Wireshark программа. это -a
(«Прекратить запись в файл захвата после того, как он достигнет размера в килобайтах») и -b
(«Когда заполнится первый файл захвата, TShark переключит запись в следующий файл и так далее») параметры кажутся особенно интересными
pcapdump, часть pcaputils пакет. См. Параметры конфигурации interval=
(перейти к следующему файлу через N секунд захвата) и filefmt=
(шаблон для создания имени файлов захвата).