Questo perché hai scritto -W 3
invece di -W 48
. Ci sono, tuttavia, altri errori nel tuo comando.
L'opzione -G
significa:
-G rotate_seconds
Se specificato, ruota il file dump specificato con
-w
opzione ogni rotate_seconds secondi. I file di salvataggio avranno il nome specificato da-w
che dovrebbe includere un formato orario come definito da strftime(3). Se non viene specificato alcun formato dell'ora, ogni nuovo file sovrascriverà il precedente.Se utilizzato insieme a
-C
opzione, i nomi dei file assumeranno la forma di 'file'.
Visto che hai scritto -G 3
, lo ruoterai ogni 3 secondi, mentre dichiari
...che acquisisce 30 minuti di dati
Inoltre, lo schema di denominazione è sbagliato:da quanto sopra,
Se utilizzato insieme a
-C
opzione, i nomi dei file assumeranno la forma di 'file'.
Pertanto non ha senso specificare il formato dell'ora per il nome.
Inoltre, il -C
option non ha argomenti, mentre, secondo la pagina man, dovrebbe:
tcpdump [ -AdDefIKlLnNOpqRStuUvxX ] [ -B dimensione_buffer ] [ -c conta ]
[ -C dimensione_file ] [ -G ruota_secondi ] [ -F file ][ -I interfaccia ] [ -m modulo ] [ -M segreto ][ -r file ] [ -s scatto ] [ -T digita ] [ -w file ][ -W numero di file ][ -E [email protected] algo:secret,... ][ -y tipo collegamento dati ] [ -z comando-postrotata ] [ -Z utente ] [ espressione ]
La pagina man indica:
-C
Prima di scrivere un pacchetto non elaborato in un file di salvataggio, controlla se il file è attualmente più grande di file_size e, in tal caso, chiudi il file di salvataggio corrente e aprine uno nuovo. I file di salvataggio dopo il primo file di salvataggio avranno il nome specificato con
-w
bandiera, con un numero dopo di essa, a partire da 1 e continuando verso l'alto. Le unità di file_size sono milioni di byte (1.000.000 di byte, non 1.048.576 byte).
Quindi dovresti specificare -C 100
per produrre file da 100 MB.
Alla fine, il tuo comando dovrebbe essere:
tcpdump -i en0 -w /var/tmp/trace -W 48 -G 1800 -C 100 -K -n
Ciò ruoterà i file (dei nomi trace1, trace2, ...) ciclicamente, con periodo 48, ogni 1800 secondi (=30 minuti) o ogni 100 MB, a seconda di quale evento si verifichi per primo.
Espandendo la risposta di flabdablet (cambiando -G 1800
a -G 300
–rotazione ogni cinque minuti –solo a scopo di test),
tcpdump -i en0 -w /var/tmp/trace-%m-%d-%H-%M-%S-%s -W 3 -G 300
ti darà %m=month
, %d=day of month
, %H=hour of day
, %M=minute of day
, %S=second of day
, %s=millisecond of day
, risultando in
/var/temp/trace-03-02-08-30-56-1520002568
/var/temp/trace-03-02-08-35-56-1520002568
/var/temp/trace-03-02-08-40-56-1520002568
Molto utile per organizzare le tracce per quei fastidiosi problemi intermittenti. Inoltre, se non sei root, potresti voler sudo
e ovviamente rendilo un nohup:
sudo bash -c "nohup tcpdump -i en0 -w /var/tmp/trace-%m-%d-%H-%M-%S-%s -W 3 -G 300 &"
Mi sembra che tutto ciò di cui hai bisogno sia
tcpdump -i en0 -G 1800 -w /var/tmp/trace-%H-%M.pcap
L'identificatore di formato strftime che -G si aspetta nel nome file -w non deve rappresentare una data e un'ora complete. Con solo %H e %M e un tempo di rotazione di esattamente mezz'ora, ogni chiamata di tcpdump genererà solo due diversi valori %M a distanza di mezz'ora e i file di traccia di ieri verranno sovrascritti quando la stessa ora e i numeri dei minuti girano di nuovo.