2012-06-03 47 views
5

我正在使用tcpdump来调试SSDP服务。使用tcpdump跳过IP头文件

$ sudo tcpdump -Aq udp port 1900 

在打印UDP数据包时,我在HTTP头文件之前收到了很多乱码,我认为它是IP和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 ......

一些perlsed家伙可能会来我的身后,缩短这一点,但它能够完成任务......

[[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] ~]$ 

如果添加换行符,上面列出的perl的STDIN过滤器...

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

这家伙没有来:( – NathanChristie