„Daj mi” nie zaprowadzi cię daleko. Może powinieneś pokazać nam, co próbowałeś do tej pory i gdzie dokładnie masz problemy, których sam nie możesz rozwiązać.
matthias krull
Polecenie bash to: „man tcpdump”
William Pursell
Odpowiedzi:
15
Jeśli chcesz, aby tcpdump działał przez n sekund, a następnie zakończył pracę, możesz użyć limitu czasu.
Na przykład:
timeout 2 tcpdump -eni mon0
W przeciwnym razie nie wierzę, że tcpdump ma taką opcję.
Niestety polecenie przekroczenia limitu czasu nie występuje w CentOS 5.x. Został dodany w nowszej wersji coreutils. Kolejna motywacja do aktualizacji systemu operacyjnego.
Mister_Tom
Podejrzewam, że jeśli nie masz limitu czasu, możesz zamiast tego stworzyć coś takiego jak limit czasu:
siesta
Działa świetnie dla mnie. Użyłem tego do monitorowania całego ruchu dla programu, który nie działał. Uruchomiłem tcpdump z limitem czasu wynoszącym N sekund. Potem uruchomiłem program (co zajmuje do N sekund).
Trevor Boyd Smith
Pytanie dotyczy uchwycenia ostatnich N sekund. Twoja odpowiedź mówi, jak uchwycić pierwsze N sekund.
Flimzy
3
Myślę, że najlepszym sposobem na osiągnięcie tego jest użycie flagi -G tcpdump, która w połączeniu z -w będzie zapisywać twój zrzut do nowego pliku co N sekund. Na przykład:
tcpdump -w plik_wyjściowy% s -G 10
Spowoduje to utworzenie nowego pliku o nazwie „outfile-XXXX” (gdzie XXXX oznacza liczbę sekund od epoki) co 10 sekund.
Zobacz strony podręcznika dla tcpdump (8) i strftime (3), aby uzyskać dodatkowe informacje.
tcpdump 3.9.4 dostarczany z CentOS 5.10 nie ma opcji -G. Naprawdę muszę zaktualizować system operacyjny.
Mister_Tom
-G nie zatrzymuje polecenia tcpdump. Nadal działa wiecznie. Limit czasu 2 tcpdump zatrzyma polecenie po 2 sekundach.
ciceron
@ciceron: Pytanie nie dotyczyło zatrzymania tcpdump. Chodziło o uchwycenie ostatnich N sekund . Twoja sugestia uchwyci pierwsze N sekund. Zdecydowanie nie to, o co prosił PO.
Flimzy,
1
Możesz użyć tethereal zamiast tcpdump. Możesz użyć tej opcji wiersza polecenia:
Chociaż może to odpowiedzieć na pytanie, lepszym rozwiązaniem byłoby podanie wyjaśnienia, dlaczego tak się dzieje.
DavidPostill
Sam program tcpdump nie pozwala na ograniczone czasowo śledzenie pakietów, ale tshark tak. (nb od czasu zadania i odpowiedzi na to pytanie, Ethereal stał się Wireshark) tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcapprzechwyci ruch o wartości dziesięciu minut z interfejsu eth0 do pliku $ (nazwa hosta) .10mins.pcap
Andrew Beals
0
tcpdump options -w new.tcpdump
ps -ef |grep tcpdump
zanotuj PID, powiedzmy, że to 11193
at 11:00
kill 11193
teraz poczekaj, aż nadejdzie godzina 11:00, a schwytanie zostanie zabite, ale uratowane
sudo tcpdump -i -w, a to uruchomi tcpdump w trybie uśpienia
w: zapisz dane wyjściowe w pliku .pcap &: proces tcpdump zostanie uruchomiony w trybie uśpienia Uwaga: upewnij się, że masz wystarczającą ilość wolnego miejsca, jeśli chcesz. uruchomić go przez chwilę. Nie wyłączy się, jeśli wylogujesz się, dopóki nie zabijesz procesu.
Odpowiedzi:
Jeśli chcesz, aby tcpdump działał przez n sekund, a następnie zakończył pracę, możesz użyć limitu czasu.
Na przykład:
W przeciwnym razie nie wierzę, że tcpdump ma taką opcję.
źródło
Myślę, że najlepszym sposobem na osiągnięcie tego jest użycie flagi -G tcpdump, która w połączeniu z -w będzie zapisywać twój zrzut do nowego pliku co N sekund. Na przykład:
tcpdump -w plik_wyjściowy% s -G 10
Spowoduje to utworzenie nowego pliku o nazwie „outfile-XXXX” (gdzie XXXX oznacza liczbę sekund od epoki) co 10 sekund.
Zobacz strony podręcznika dla tcpdump (8) i strftime (3), aby uzyskać dodatkowe informacje.
źródło
Możesz użyć tethereal zamiast tcpdump. Możesz użyć tej opcji wiersza polecenia:
źródło
tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcap
przechwyci ruch o wartości dziesięciu minut z interfejsu eth0 do pliku $ (nazwa hosta) .10mins.pcaptcpdump options -w new.tcpdump
ps -ef |grep tcpdump
zanotuj PID, powiedzmy, że to 11193
at 11:00 kill 11193
teraz poczekaj, aż nadejdzie godzina 11:00, a schwytanie zostanie zabite, ale uratowane
źródło
Próbowałem rozwiązać ten sam problem, więc napisałem przenośny skrypt, aby uruchomić tcpdump na n sekundę.
Zastosowanie ./tcpdump_for_n_sec.sh sec argumenty dla tcpdump
źródło
sudo tcpdump -i -w, a to uruchomi tcpdump w trybie uśpienia
źródło