Você está complicando demais a sua invocação de tcpdump
; isto é, você está se esforçando para imprimir muita informação que não deseja. Deixado para seus próprios dispositivos, tcpdump
imprime informações de comprimento no final da maioria das linhas; veja por exemplo:
[root@risby ~]# tcpdump -n -n -i eth1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
09:44:10.134745 IP6 2a01:2c0:e:300:7271:bcff:feac:445a.50367 > 2a01:8000:0:4::1:1.993: Flags [P.], seq 2525222567:2525222611, ack 1131700467, win 1432, options [nop,nop,TS val 676470793 ecr 1793162882], length 44
09:44:10.163565 IP6 2a01:8000:0:4::1:1.993 > 2a01:2c0:e:300:7271:bcff:feac:445a.50367: Flags [P.], seq 1:59, ack 44, win 1174, options [nop,nop,TS val 1793315067 ecr 676470793], length 58
[...]
Com um pouco de grep
para selecionar linhas com informações de comprimento (que são quase todas) e um pouco de perl
para remover a maior parte da linha antes disso, você pode obter uma implementação rápida e suja do que você quer:
[root@risby ~]# tcpdump -n -n -i eth1 | grep --line-buffered 'length' | perl -n -e 's/.*length/length/; print $_'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
length 32
length 24
length 160
length 0
length 192
length 0
length 240
[...]