TCPDUMP çıkışlarının gerçek zamanlı olarak nasıl işleneceği / işleneceği


27

İstemciler tarafından DNS isteklerini tcpdump yapmak istersem (OpenWrt 10.04 yönlendiricisinde),

root@ROUTER:/etc# tcpdump -n -i br-lan dst port 53 2>&1       
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br-lan, link-type EN10MB (Ethernet), capture size 96 bytes
22:29:38.989412 IP 192.168.1.200.55919 > 192.168.1.1.53: 5697+ A? foo.org. (25)
22:29:39.538981 IP 192.168.1.200.60071 > 192.168.1.1.53: 17481+ PTR? 150.33.87.208.in-addr.arpa. (44)
^C
2 packets captured
3 packets received by filter
0 packets dropped by kernel

Tamamen tamam. Fakat. Tcpdumps çıkışını neden gerçek zamanlı olarak bağlayamıyorum?

root@ROUTER:/etc# tcpdump -n -i br-lan dst port 53 2>&1 | awk '/\?/ {print $3}'
^C
root@ROUTER:/etc# 

Tkpdump'tan sonra bir şey yapmazsam, HERHANGİ bir çıktı alamıyorum. Neden? Neden tcpdump çıkışını gerçek zamanlı olarak boru hattıyla işleyemiyorum? (örneğin: örnekte sadece 3. sütunu çıkarır)

Bunun için herhangi bir çözüm var mı?

Yanıtlar:


35

Düz dışarı man tcpdump

-l     Make stdout line buffered.  Useful if you want to see the data while 
       capturing it.  E.g.,

              tcpdump -l | tee dat

       or

              tcpdump -l > dat & tail -f dat

       Note that on Windows,``line buffered'' means ``unbuffered'', so that 
       WinDump will write each character individually if -l is specified.

       -U is similar to -l in its behavior, but it will cause output to be 
       ``packet-buffered'', so that the output is written to stdout at the 
       end of each packet rather than at the end of each line; this is 
       buffered on all platforms, including Windows.


3

Tcpdump görünüşte bir boruya yazdığında çıktıyı tamponluyor. Her yazma için çıktıyı temizleme değil, bu nedenle sistem çıkışı yaklaşık 4k baytlık parçalar halinde yazacak. Filtreniz dışarı atıyor, böylece o filtre yeterince çıktı yazana kadar hiçbir şey görmeyeceksiniz. Yeterince toplandığında bir yığın halinde yazılacaktır ve o zaman yayılan birkaç satır görmelisiniz.

DNS aramalarını birçok kez tetiklemeye çalışın ve sonra ne olacağını görün.


1

expectunbufferBir tty'ye yazdıklarını varsaymak için komutları kandırmak için bir komutu vardır, bu yüzden tamponlamazlar.


1

Paketleri mümkün olan en kısa sürede görmeleri gereken tcpdump çevresinde gerçek zamanlı bir izleme sarmalayıcısı yapıyorum. Hatta -lbazı gecikmeler var.

tcpdump şimdi, --immediate-modebu problemi benim için çözdü. Çalışmasını sağlamak için birlikte kullandım -l.

Bu cevaba bakınız .

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.