Estou procurando ser capaz de capturar uma saída rotativa tcpdump que captura 30 minutos de dados em 48 arquivos, ciclicamente.
A página de manual implica que isso deve ser possível, mas meus testes não parecem produzir o resultado que estou procurando:
-W
Utilizado em conjunto com a
-C
opção, isso limitará o número de arquivos criados para o número especificado e começará a sobrescrever arquivos desde o início, criando assim um buffer 'rotativo'. Além disso, nomeará os arquivos com 0s iniciais suficientes para suportar o número máximo de arquivos, permitindo que eles sejam classificados corretamente.Utilizado em conjunto com a
-G
opção, isso limitará o número de arquivos de despejo girados criados, saindo com o status 0 ao atingir o limite. Se usado-C
também, o comportamento resultará em arquivos cíclicos por fatia de tempo.
Estou executando isso nos clientes OS X 10.9.5 / 10.10.3. Aqui está o comando test; apenas sai após o terceiro arquivo:
tcpdump -i en0 -w /var/tmp/trace-%Y-%M-%d_%H.%M.%S.pcap -W 3 -G 3 -C -K -n
Respostas:
Isso porque você escreveu em
-W 3
vez de-W 48
. Existem, no entanto, outros erros no seu comando.A opção
-G
significa:Desde que você escreveu
-G 3
, você estará girando isso a cada 3 segundos, enquanto afirmaAlém disso, o esquema de nomeação está errado: do acima exposto,
Portanto, não faz sentido especificar o formato da hora para o nome.
Além disso, a
-C
opção não tem argumento, enquanto, de acordo com a página do manual , deve:A página do manual declara:
Então você deve especificar
-C 100
para produzir arquivos de 100 MB.No final, seu comando deve ser:
Isso girará os arquivos (dos nomes trace1, trace2, ...) ciclicamente, com período 48, a cada 1800 segundos (= 30 minutos) ou a cada 100 MB, o que ocorrer primeiro.
fonte
If no time format is specified, each new file will overwrite the previous.
(Eu atualizei a resposta.)Expandindo a resposta do flabdablet (alterando
-G 1800
para-G 300
- rotação a cada cinco minutos - apenas para fins de teste),vai lhe dar
%m=month
,%d=day of month
,%H=hour of day
,%M=minute of day
,%S=second of day
,%s=millisecond of day
, resultando emMuito útil para organizar traços para esses problemas intermitentes incômodos. Além disso, se você não é root, pode querer
sudo
e, claro, torná-lo um nohup:fonte
Parece-me que tudo que você precisa é
O especificador de formato strftime que -G espera no nome do arquivo -w não precisa representar uma data e hora completas. Com apenas% H e% M, e um tempo de rotação de exatamente meia hora, qualquer chamada de tcpdump gerará apenas dois valores% M diferentes com meia hora de diferença, e os arquivos de rastreamento de ontem serão substituídos na mesma hora e números minuciosos rolam novamente.
fonte
Após algumas experiências, não consegui que a resposta do @MariusMatutiae funcionasse conforme o esperado. Se a hora se tornar o fator limitante e sem a adição do formato da hora ao nome do arquivo, o arquivo pcap atual será simplesmente substituído.
Por exemplo, tente:
Tudo o que você acaba
trace.pcap0
escrevendo é repetidamente.Como sugerido no comentário, se você adicionar a formatação de hora ao nome do arquivo, você simplesmente terminará com toda lista crescente de arquivos.
Portanto, eu tive que ficar com arquivos limitados de tamanho simples:
fonte
Sim, parece não funcionar como a resposta de MariusMututiae diz.
Parece-me que pode estar capturando o máximo de
-C 100
arquivos MB possível em um período de 30 minutos, porquehttpdebug.pcap03
possui o timestamp mais antigo e é muito menor que 100 MB, então parece que foi cortado em uma marca de 30 minutos. Depois de atingir 30 minutos, parece voltarhttpdebug.pcap00
e aumentar o número à medida que atinge 100 MB. Isso significa que, se você tiver muitas solicitações em um período de 30 minutos, poderá obter números httpdebug.pcapXX muito altos. Se você nunca mais atender a tantas solicitações em um período, esses altos números httpdebug.pcapXX nunca serão substituídos.Então, eu estou pensando que arquivos cíclicos por timeslice significam que o timeslice é
-G 1800
e irá alternar a cada-G 1800
e incrementar a cada-C 100
.Não tenho certeza se
-W 48
isso afeta, mas talvez se você chegar ahttpdebug.pcap47
(contagem começa em 0`, ele irá parar de capturar pacotes.Recentemente, houve um problema no GitHub aberto sobre a redação confusa. Eles não mudaram a implementação, mas tentaram tornar a documentação um pouco mais clara.
As alterações propostas foram mescladas em 28 de janeiro de 2019 .
A partir de hoje, 17 de março de 2019, aqui está a documentação atual:
-C
:-G
:-W
:Eu ainda acho um pouco confuso, mas acho que a diferença da minha conclusão acima é que
-W
quando usado com-C -G
não afeta nada além do nome do arquivo.Em geral,
-W
é usado para limitar o número de arquivos. Portanto, não use se você deseja capturar indefinidamente.fonte