um script para repetir um comando tshark e cada minuto alterando o nome do arquivo de saída

1

Sou um pouco novo no Unix e queria pedir um código rápido que eu possa usar para repetir o comando tshark a cada 60 segundos,

o comando que quero executar é algo como:

 tshark -z io,stat,1,tcp.port==80,tcp.port==443 -a duration:60  > filename.txt

Eu preciso colocar este comando em um loop para executar novamente a cada 60 segundos, e cada vez alterar o nome do arquivo de saída, use preferencialmente a hora e data para nomear arquivos ou mais fácil usar um contador de passos para nomear os arquivos.

alguma sugestão?

Obrigado

    
por Hossam Zalabany 17.02.2017 / 01:08

2 respostas

3

Como o comando que você postou já leva cerca de 60 segundos para ser executado, talvez algo como o seguinte faça:

while true; do tshark ... > "tshark-$(date +%F-%T).txt"; done

Isso produzirá nomes de arquivos como tshark-2017-02-16-11:44:22.txt .

    
por 17.02.2017 / 01:45
1

Note que se você repetir esse comando em um loop, você perderá os pacotes que são transmitidos entre o tempo que um tshark fecha e o próximo tshark é iniciado e está pronto para capturar pacotes.

Talvez uma abordagem melhor seja usar dumpcap uma vez e dizer para gerar um novo arquivo a cada minuto. E, em seguida, obtenha as estatísticas desses depósitos quando necessário. Com arquivos de despejo não processados, você pode obter todas as informações possíveis.

Algo como:

dumpcap -b duration:60 -w dump.pcap

O que criaria arquivos com o nome dump_00002_20170224130408.pcap .

E, em seguida, obtenha as estatísticas, se necessário, com:

tshark -z io,stat,1,tcp.port==80,tcp.port==443 -r dump_00002_20170224130408.pcap
    
por 24.02.2017 / 14:06