GNU/Linux >> Znalost Linux >  >> Linux

tcpdump – rotace zachycených souborů pomocí -G, -W a -C

To proto, že jste napsali -W 3 místo -W 48 . Ve vašem příkazu jsou však další chyby.

Možnost -G znamená:

-G rotate_seconds

      Pokud je zadán, otočí soubor výpisu zadaný pomocí -w každou rotate_seconds sekundy. Uložené soubory budou mít název určený -w který by měl obsahovat formát času definovaný pomocí strftime(3). Pokud není zadán žádný formát času, každý nový soubor přepíše předchozí.

      Pokud se použije ve spojení s -C možnost, budou mít názvy souborů tvar 'soubor '.

Protože jste napsali -G 3 , budete to otáčet každé 3 sekundy, dokud jste uvedli

...který zachytí data za 30 minut

Také schéma pojmenování je chybné:z výše uvedeného,

Pokud se použije ve spojení s -C možnost, budou mít názvy souborů tvar 'soubor '.

Nemá tedy smysl uvádět formát času pro jméno.

Dále -C volba nemá žádný argument, zatímco podle manuálové stránky by měla:

tcpdump [ -AdDefIKlLnNOpqRStuUvxX ] [ -B velikost_bufferu ] [ -c počet ]
[ -C velikost_souboru ] [ -G rotate_seconds ] [ -F soubor ][ -I rozhraní ] [ -m modul ] [ -M tajné ][ -r soubor ] [ -s snaplen ] [ -T typ ] [ -w soubor ][ -W počet souborů ][ -E [email protected] algo:secret,... ][ -y typ datového odkazu ] [ -z postrotate-command ] [ -Z uživatel ] [ výraz ]

Manová stránka uvádí:

-C

      Před zápisem nezpracovaného paketu do uloženého souboru zkontrolujte, zda je soubor aktuálně větší než velikost_souboru a pokud ano, zavřete aktuální uložený soubor a otevřete nový. Uložené soubory za prvním uloženým souborem budou mít název určený pomocí -w vlajka s číslem za ní, začínající na 1 a pokračující nahoru. Jednotky velikost_souboru jsou miliony bajtů (1 000 000 bajtů, nikoli 1 048 576 bajtů).

Měli byste tedy zadat -C 100 za účelem vytvoření 100 MB souborů.

Nakonec by váš příkaz měl být:

tcpdump -i en0 -w /var/tmp/trace -W 48 -G 1800 -C 100 -K -n

To bude cyklicky střídat soubory (s názvy trace1, trace2, ...) s periodou 48, buď každých 1800 sekund (=30 minut) nebo každých 100 MB, podle toho, co nastane dříve.


Rozšíření po odpovědi flabdabletu (změna -G 1800 na -G 300 –rotace každých pět minut –pouze pro účely testování),

tcpdump -i en0 -w /var/tmp/trace-%m-%d-%H-%M-%S-%s -W 3 -G 300

vám dá %m=month , %d=day of month , %H=hour of day , %M=minute of day , %S=second of day , %s=millisecond of day , což má za následek

/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

Velmi užitečné pro organizování stop pro ty otravné občasné problémy. Také, pokud nejste root, možná budete chtít sudo a samozřejmě to udělat nohup:

sudo bash -c "nohup tcpdump -i en0 -w /var/tmp/trace-%m-%d-%H-%M-%S-%s -W 3 -G 300 &"

Zdá se mi, že vše, co potřebujete, je

tcpdump -i en0 -G 1800 -w /var/tmp/trace-%H-%M.pcap

Specifikátor formátu strftime, který -G očekává v názvu souboru -w, nemusí představovat úplné datum a čas. Pokud jsou tam pouze %H a %M a doba rotace přesně půl hodiny, každé dané vyvolání tcpdump vygeneruje pouze dvě různé hodnoty %M s půlhodinovým odstupem a včerejší trasovací soubory budou přepsány, když bude stejná hodina a čísla minut se znovu točily.


Linux
  1. Použití sed k nalezení a nahrazení textových souborů v Linuxu

  2. wget vs curl:Jak stahovat soubory pomocí wget a curl

  3. Hledání spustitelných souborů pomocí ls a grep

  1. Jak šifrovat a dešifrovat soubory a adresáře pomocí Tar a OpenSSL

  2. Bezpečně přenášejte soubory a složky mezi počítači pomocí Croc

  3. Odstranění souborů pomocí rm pomocí find a xargs

  1. Jak zachytit a analyzovat pakety pomocí příkazu tcpdump v systému Linux

  2. Používání souborů a zařízení v kontejnerech Podman rootless

  3. Jak odesílat a stahovat soubory pomocí Rsync