2012-06-03 22 views
5

के साथ छोड़ें, मैं एक एसएसडीपी सेवा डीबग करने के लिए tcpdump का उपयोग कर रहा हूं।आईसी हेडर को tcpdump

$ sudo tcpdump -Aq udp port 1900 

यूडीपी पैकेट मुद्रण है, मैं HTTP हेडर मैं आईपी और UDP हेडर होने की अनुमान से पहले निरर्थक शब्दों का एक बहुत हो रही है। मैं इन्हें प्रिंटिंग कैसे दबा सकता हूं, और केवल पैकेट में एप्लिकेशन स्तर डेटा प्रिंट करें (जिसमें HTTP शीर्षलेख शामिल हैं)?

यहाँ एक उदाहरण है, सामान मैं नहीं चाहता कि दूसरी पंक्ति पर NOTIFY करने से पहले है:

14:41:56.738130 IP www.routerlogin.com.2239 > 239.255.255.250.1900: UDP, length 326 
[email protected] * HTTP/1.1 
HOST: 239.255.255.250:1900 

उत्तर

2

दुर्भाग्य से वहाँ तुम क्या चाहते करने के लिए कोई tcpdump या यहाँ तक कि tshark शॉर्टकट हैं ... सबसे अच्छा हम कर सकते हैं एक पाठ फिल्टर के माध्यम से STDOUT चलाया जाता है ...

कुछ perl या sed पुरुष शायद मेरे पीछे आ जाएगा और इस छोटा है, लेकिन यह काम किया जाता है ...

[[email protected] ~]$ sudo tcpdump -Aq udp port 1900 | perl -e 'while ($line=<STDIN>) { if ($line!~/239.255.255.250.+?UDP/) { if ($line=~/(NOTIFY.+)$/) {print "$1\n";} else {print $line;}}}' 
NOTIFY * HTTP/1.1 
HOST: 239.255.255.250:1900 

[[email protected] ~]$ 

आप लाइन टूट जाता है जोड़ते हैं, पर्ल STDIN ऊपर सूचीबद्ध फिल्टर ... है

while ($line=<STDIN>) { 
    if ($line!~/239.255.255.250.+?UDP/) { 
     if ($line=~/(NOTIFY.+)$/) { 
      print "$1\n"; 
     } else { 
      print $line; 
     } 
    } 
} 
+0

पुरुष कभी नहीं आया था :( – NathanChristie