ถ้าฉันต้องการที่จะ tcpdump ร้องขอ DNS โดยลูกค้า (บนเราเตอร์ OpenWrt 10.04) จากนั้นฉัน
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
ไม่เป็นไร แต่. เหตุใดฉันจึงไม่สามารถส่งออก tcpdumps แบบเรียลไทม์ได้
root@ROUTER:/etc# tcpdump -n -i br-lan dst port 53 2>&1 | awk '/\?/ {print $3}'
^C
root@ROUTER:/etc#
ถ้าฉัน awk ฯลฯ อะไรหลังจาก tcpdump ฉันไม่ได้รับผลลัพธ์ใด ๆ ทำไมถึงเป็นอย่างนั้น? ทำไมฉันไม่สามารถประมวลผลเอาต์พุตของ tcpdump ด้วย pipelining แบบเรียลไทม์? (เพื่อให้เช่น: ในตัวอย่างในผลลัพธ์คอลัมน์ที่ 3 เท่านั้น)
มีวิธีแก้ไขปัญหานี้หรือไม่?