2012-06-03 11 views
5

Sto utilizzando tcpdump per eseguire il debug di un servizio SSDP.Ignora le intestazioni IP con tcpdump

$ sudo tcpdump -Aq udp port 1900 

Quando si stampa i pacchetti UDP, sto ricevendo un sacco di parole senza senso prima che le intestazioni HTTP ho la presunzione di essere gli header IP e UDP. Come posso sopprimere la stampa di questi e stampare semplicemente i dati a livello di applicazione nel pacchetto (che include le intestazioni HTTP)?

Ecco un esempio, la roba che non voglio è precedente alla NOTIFY sulla seconda riga:

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 

risposta

2

Purtroppo non ci sono tcpdump o anche tshark scorciatoie per fare ciò che si vuole ... il migliore siamo in grado di fare è correre STDOUT attraverso un filtro di testo ...

Alcuni perl o sed ragazzo sarà probabilmente venire dietro di me e accorciare questo, ma ottiene il lavoro fatto ...

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

Se si aggiunge interruzioni di linea, il filtro perl STDIN elencato sopra è ...

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

Il ragazzo non è mai venuto :( – NathanChristie

Problemi correlati