Tcpdump kullanarak paketlerin son N saniyesini yakalama


14

Tcpdump kullanarak paketlerin son N saniyesini nasıl yakalayabilirim?


1
"Ver beni" seni buraya götürmeyecek. Belki bize şimdiye kadar denediğinizi ve tam olarak nerede problemlerin olduğunu kendiniz çözemezsiniz.
matthias krull

İstediğiniz bash komutu: "man tcpdump"
William Pursell

Yanıtlar:


15

Tcpdump öğesinin n saniye boyunca çalışmasını ve ardından çıkılmasını istiyorsanız, zaman aşımı kullanabilirsiniz.

Örneğin:

timeout 2 tcpdump -eni mon0

Aksi takdirde tcpdump'ın bunu yapmak için bir seçeneği olduğuna inanmıyorum.


Maalesef, zaman aşımı komutu CentOS 5.x'te mevcut değildir. Daha yeni bir coreutils sürümünde eklendi. İşletim sistemini yükseltmek için başka bir motivasyon.
Mister_Tom

Zaman aşımı yoksa, bunun yerine bir komut dosyası ile zaman aşımı gibi bir şey oluşturabilirsiniz:
siesta

Benim için harika çalışıyor. Bunu, çalışmayan bir programın tüm trafiğini izlemek için kullandım. Nc zaman aşımı ile tcpdump başlattım. Sonra programı başlattım (bu N saniye kadar sürer).
Trevor Boyd Smith

Soru, son N saniyeyi yakalamayı ister . Cevabınız ilk N saniyesini nasıl yakalayacağınızı anlatıyor .
Flimzy

3

Bunu başarmanın en iyi yolunun, -w ile birlikte kullanıldığında, dökümünüzü her N saniyede yeni bir dosyaya kaydedecek olan tcpdump'ın -G bayrağı ile olduğunu düşünüyorum. Örneğin:

tcpdump -w outfile-% s -G 10

Bu, her 10 saniyede bir 'outfile-XXXX' adında yeni bir dosya oluşturur (burada XXXX, çağdan bu yana geçen saniye sayısını gösterir).

Ek ayrıntılar için tcpdump (8) ve strftime (3) kılavuz sayfalarına bakın.


CentOS 5.10 ile birlikte gelen tcpdump 3.9.4'te -G seçeneği yoktur. İşletim sistemimi gerçekten yükseltmem gerekiyor.
Mister_Tom

-G, tcpdump komutunu durdurmaz. Hala sonsuza dek sürüyor. 2 tcpdump zaman aşımı komutu 2 saniye sonra durduracaktır.
ciceron

@ciceron: Soru tcpdump'ı durdurmakla ilgili değildi. Son N saniyeyi yakalamakla ilgiliydi . Önerin ilk N saniyesini yakalayacak . Kararla OP istedi ne değil.
Flimzy

1

Tcpdump yerine tethereal kullanabilirsiniz. Bu komut satırı seçeneğini kullanabilirsiniz:

-a duration:X

Bu soruya cevap verebilir, ancak neden böyle yaptığını açıklamak daha iyi bir yanıt olacaktır .
DavidPostill

tcpdump'ın kendisi sınırlı bir paket izine izin vermez, ancak tshark izin verir. (bu soru tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcapsorulup yanıtlandığından beri, Ethereal Wireshark oldu) eth0 arabiriminden $ (hostname) dosyasına 10 dakika trafik çekecek .10mins.pcap
Andrew Beals

0

tcpdump options -w new.tcpdump

ps -ef |grep tcpdump

PID not almak, 11193 olduğunu söyle

at 11:00 kill 11193

şimdi saat 11: 00'a kadar bekleyin ve yakalamanız öldürülecek ancak kaydedilecek


fwiw pgrep ps | grep'e göre çok daha iyi bir alternatiftir; özellikle burada.
İyi Kişi

0

Aynı sorunu çözmeye çalışıyordum, n saniye boyunca tcpdump çalıştırmak için taşınabilir bir komut dosyası yazdım.

#tcpdump_for_n_sec.sh
n=$1
shift #remove first arg from $@ 
tcpdump $@ & x=$!
sleep $n
kill $x

Tcpdump için ./tcpdump_for_n_sec.sh sn argümanlar

./tcpdump_for_n_sec.sh 5 i- any not port 22 -s0 -wfile.pcap

0

sudo tcpdump -i -w ve bu çalışacak tcpdump uyku modu

  • w: .pcap dosyasındaki çıktıyı kaydet &: tcpdump işlemi uyku modunda çalışacaktır Not: isterseniz yeterli alanınız olduğundan emin olun. bir süre çalıştırmak için. İşlemi öldürene kadar oturumu kapatırsanız kesilmez.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.