2012-06-03 12 views
5

Estoy usando tcpdump para depurar un servicio SSDP.Omita los encabezados IP con tcpdump

$ sudo tcpdump -Aq udp port 1900 

Al imprimir los paquetes UDP, estoy recibiendo un montón de galimatías antes de las cabeceras HTTP que presumen de ser las cabeceras IP y UDP. ¿Cómo suprimo la impresión de estos y solo imprimo los datos de nivel de la aplicación en el paquete (que incluye los encabezados HTTP)?

He aquí un ejemplo, las cosas que no quiero es anterior a NOTIFY en la segunda línea:

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 

Respuesta

2

Lamentablemente no hay tcpdumptshark o incluso atajos para hacer lo que quiere ... el mejor podemos hacer es ejecutar la salida estándar a través de un filtro de texto ...

un tipo perl o sed probablemente vendrán detrás de mí y acortar esto, pero hace el trabajo ...

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

Si agrega saltos de línea, el filtro Perl STDIN mencionado anteriormente es ...

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

El tipo nunca llegó :( – NathanChristie

Cuestiones relacionadas