“tcpdump” para capturar os últimos pacotes

2

Eu estou monitorando uma certa porta, porque meu aplicativo usa essa porta, parece que a conexão cai em momentos aleatórios, eu quero ver quais são os últimos pacotes passando antes que a conexão caia: Eu usei essa linha

 sudo tcpdump -XX -i eth0 port 3050 | tail  >> tcpamir.txt

mas para que isso funcione eu tenho que iniciar outro terminal e emitir

sudo killall tcpdump

existe uma abordagem melhor? EDIT1: é importante capturar apenas os últimos pacotes, pois não quero que o arquivo seja balão, pois há tráfego suficiente para preencher o espaço em disco rapidamente.

    
por Molegrammer 20.06.2014 / 19:54

2 respostas

2

Ok, acho que encontrei uma solução :

sudo tcpdump -XX -i eth0 -w tcpamir-%s.txt -G 10 port 3050

Isso rotaciona seu arquivo de saída a cada 10 segundos para um novo arquivo chamado tcpamir-<unixtimestamp>.txt

Você também pode modificar o arquivo de saída, para que ele se sobrescreva todos os dias, se você estiver preocupado com o tamanho do arquivo pendente. Para mais informações, leia man 3 strftime .

Eu penso em algo como

sudo tcpdump -XX -i eth0 -w tcpamir-%R.txt -G 86400

Onde %R fornece o tempo em notação de 24 horas (12:40, por exemplo).

Leia arquivos de saída relevantes com

sudo tcpdump -r tcpamir-<unixtimestamp>.txt

Segunda solução:

Divida-o em mais comandos e salve-o como um script / função:

sudo tcpdump -XX -i eth0 port 3050 >> tcptmp.txt
sudo tail -n100 tcptmp.txt >> tcpamir.txt
sudo rm tcptmp.txt
    
por 20.06.2014 / 20:20
0

Se você quiser apenas gravar todo o tráfego capturado, basta adicionar -w à linha removendo '| cauda > > tcpamir.txt '

# tcpdump -XX -i eth0 port 3050 -w tcpamir.cap

Se você analisar a captura em wireshark, a extensão deve ser .cap Quando você assegura que a captura é feita, você pode matar isso com ctrl + c

NOTA: -w [filename.cap] para gravar a captura em um arquivo

    
por 20.06.2014 / 20:11