Szukam możliwości przechwycenia obrotowego wyjścia tcpdump, które cyklicznie przechwytuje dane o wartości 30 minut do 48 plików.
Strona podręcznika sugeruje, że powinno to być możliwe, ale moje testy wydają się nie przynosić oczekiwanych rezultatów:
-W
W połączeniu z tą
-C
opcją ograniczy liczbę utworzonych plików do określonej liczby i rozpocznie nadpisywanie plików od początku, tworząc w ten sposób „rotacyjny” bufor. Ponadto nada nazwę plikom wystarczającą liczbę zer, aby obsłużyć maksymalną liczbę plików, umożliwiając ich prawidłowe sortowanie.W połączeniu z
-G
opcją ograniczy to liczbę tworzonych rotacyjnych plików zrzutu, wychodząc ze statusem 0 po osiągnięciu limitu. W przypadku równoczesnego użycia-C
zachowanie spowoduje cykliczne pliki na przedział czasu.
Używam tego na klientach OS X 10.9.5 / 10.10.3. Oto polecenie testowe; po prostu kończy pracę po trzecim pliku:
tcpdump -i en0 -w /var/tmp/trace-%Y-%M-%d_%H.%M.%S.pcap -W 3 -G 3 -C -K -n
Odpowiedzi:
To dlatego, że napisałeś
-W 3
zamiast-W 48
. W twoim poleceniu są jednak inne błędy.Opcja
-G
oznacza:Odkąd napisałeś
-G 3
, będziesz to obracać co 3 sekundy, o ile to zauważyłeśPonadto schemat nazewnictwa jest nieprawidłowy: z powyższego
Dlatego nie ma sensu określać formatu godziny dla nazwy.
Ponadto
-C
opcja nie ma argumentu, podczas gdy zgodnie ze stroną podręcznika powinna:Do strona człowiek stwierdza:
Dlatego należy określić
-C 100
, aby wygenerować 100 MB plików.Na koniec twoje polecenie powinno brzmieć:
Spowoduje to cykliczne obracanie plików (o nazwach trace1, trace2, ...) z okresem 48, co 1800 sekund (= 30 minut) lub co 100 MB, w zależności od tego, co nastąpi wcześniej.
źródło
If no time format is specified, each new file will overwrite the previous.
(zaktualizowałem odpowiedź.)Rozszerzanie po odpowiedzi flabdablet (zmiana
-G 1800
na-G 300
- obrót co pięć minut - tylko w celach testowych),da wam
%m=month
,%d=day of month
,%H=hour of day
,%M=minute of day
,%S=second of day
,%s=millisecond of day
, w wynikuBardzo przydatny do organizowania śladów dla tych nieznośnych sporadycznych problemów. Ponadto, jeśli nie jesteś rootem, możesz chcieć
sudo
i oczywiście zmienić go w:źródło
Wydaje mi się, że wszystko czego potrzebujesz to
Specyfikator formatu strftime, którego -G oczekuje w pliku -w nazwa pliku, nie musi przedstawiać pełnej daty i godziny. Mając tam tylko% H i% M oraz czas obrotu dokładnie pół godziny, każde wywołanie tcpdump wygeneruje tylko dwie różne wartości% M w odstępie pół godziny, a wczorajsze pliki śledzenia zostaną nadpisane, gdy ta sama godzina i liczby minut znów się toczą.
źródło
Po kilku eksperymentach nie udało mi się uzyskać odpowiedzi @MariusMatutiae zgodnie z oczekiwaniami. Jeśli czas stał się czynnikiem ograniczającym i bez dodania formatu czasu do nazwy pliku, bieżący plik pcap jest po prostu nadpisywany.
Na przykład spróbuj:
Wszystko co kończysz to
trace.pcap0
pisanie w kółko.Jak sugerowano w komentarzu, jeśli dodasz formatowanie czasu do nazwy pliku, to po prostu skończysz na każdej rosnącej liście plików.
Dlatego musiałem trzymać się prostych plików o ograniczonych rozmiarach:
źródło
Tak, to nie działa, jak mówi odpowiedź Marius Matutiae .
Wydaje mi się, że może przechwytywać jak najwięcej
-C 100
plików MB, jak to możliwe w ciągu 30 minut, ponieważhttpdebug.pcap03
ma najwcześniejszy znacznik czasu i jest znacznie mniejszy niż 100 MB, więc wygląda na to, że został wycięty w 30 minucie. Gdy osiągnie 30 minut, wydaje się, że przeskakuje z powrotemhttpdebug.pcap00
i zwiększa liczbę, gdy osiąga 100 MB. Oznacza to, że jeśli masz dużo żądań w ciągu 30 minut, osiągasz bardzo wysokie liczby httpdebug.pcapXX. Jeśli nigdy nie osiągniesz tak wielu żądań w danym okresie, te wysokie liczby httpdebug.pcapXX nigdy nie zostaną zastąpione.Myślę więc, że cykliczne pliki na przedział czasu oznaczają, że przedział czasu jest
-G 1800
i będzie się on cyklicznie zmieniał-G 1800
co każde-C 100
.Nie jestem pewien, czy
-W 48
to wpłynie, ale być może jeśli to zrobiszhttpdebug.pcap47
(liczenie zaczyna się od 0, przestanie przechwytywać pakiety.Nieco niedawno pojawił się problem GitHub dotyczący mylących sformułowań. Nie zmienili implementacji, ale starali się, aby dokumentacja była nieco jaśniejsza.
Te proponowane zmiany zostały połączone w dniu 28 stycznia 2019 r .
Na dzień dzisiejszy, 17 marca 2019 r., Oto aktualna dokumentacja:
-C
:-G
:-W
:Nadal uważam, że to trochę mylące, ale sądzę, że różnica w stosunku do mojego powyższego wniosku polega na tym, że napisane w połączeniu
-W
z-C -G
nie wpływa na nic poza nazwą pliku.Zasadniczo
-W
służy do ograniczania liczby plików. Więc nie używaj go, jeśli chcesz uchwycić w nieskończoność.źródło