Per monitorare il traffico HTTP tra un server e un server Web, attualmente sto utilizzando tcpdump. Funziona bene, ma mi piacerebbe sbarazzarmi di alcuni dati superflui nell'output (lo so tcpflowe wireshark, ma non sono prontamente disponibili nel mio ambiente).
Dalla tcpdumppagina man:
Per stampare tutti i pacchetti HTTP IPv4 da e verso la porta 80, ovvero stampare solo pacchetti che contengono dati, non, ad esempio, pacchetti SYN e FIN e pacchetti solo ACK.
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
Questo comando
sudo tcpdump -A 'src example.com e la porta tcp 80 e (((ip [2: 2] - ((ip [0] & 0xf) << 2)) - ((tcp [12] & 0xf0) >> 2) )! = 0) '
fornisce il seguente output:
19: 44: 03.529413 IP 192.0.32.10.http> 10.0.1.6.52369: Flags [P.], seq 918827135: 918827862, ack 351213824, win 4316, opzioni [nop, nop, TS val 4093273405 ecr 869959372], lunghezza 727
E ..... @ ....... .... P..6.0 ......... D ...... __ .. e = 3 ...__ HTTP / 1.1 200 OK Server: Apache / 2.2.3 (Red Hat) Tipo di contenuto: text / html; charset = UTF-8 Data: sab, 14 nov 2009 18:35:22 GMT Età: 7149
Lunghezza contenuto: 438<HTML> <HEAD> <TITLE> Esempio di pagina Web </TITLE> </HEAD> <body>
<p> Hai raggiunto questa pagina web ... </p> </BODY> </HTML>
Questo è quasi perfetto, tranne per la parte evidenziata. Cos'è, fine - ancora più importante - come posso liberarmene? Forse è solo una piccola modifica dell'espressione alla fine del comando?