GNU/Linux >> Belajar Linux >  >> Linux

tcpdump – putar file tangkapan menggunakan -G, -W dan -C

Itu karena Anda menulis -W 3 bukannya -W 48 . Namun, ada kesalahan lain dalam perintah Anda.

Opsi -G artinya:

-G rotate_seconds

      Jika ditentukan, putar file dump yang ditentukan dengan -w pilihan setiap rotate_seconds detik. File simpanan akan memiliki nama yang ditentukan oleh -w yang harus menyertakan format waktu seperti yang didefinisikan oleh strftime(3). Jika tidak ada format waktu yang ditentukan, setiap file baru akan menimpa file sebelumnya.

      Jika digunakan bersama dengan -C opsi, nama file akan berbentuk 'file '.

Sejak Anda menulis -G 3 , Anda akan merotasi ini setiap 3 detik, saat Anda menyatakan

...yang menangkap data selama 30 menit

Juga, skema penamaannya salah:dari atas,

Jika digunakan bersama dengan -C opsi, nama file akan berbentuk 'file '.

Jadi tidak ada gunanya menentukan format waktu untuk nama tersebut.

Selanjutnya, -C opsi tidak memiliki argumen, sedangkan, menurut halaman manual, seharusnya:

tcpdump [ -AdDefIKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c menghitung ]
[ -C ukuran_file ] [ -G putar_detik ] [ -F berkas ][ -I antarmuka ] [ -m modul ] [ -M rahasia ][ -r berkas ] [ -s jepret ] [ -T ketik ] [ -w berkas ][ -W jumlah file ][ -E [email protected] algo:rahasia,... ][ -y tipe tautan data ] [ -z perintah-postrotate ] [ -Z pengguna ] [ ekspresi ]

Halaman manual menyatakan:

-C

      Sebelum menulis paket mentah ke file simpanan, periksa apakah file saat ini lebih besar dari ukuran_file dan, jika demikian, tutup savefile saat ini dan buka yang baru. File simpanan setelah file simpanan pertama akan memiliki nama yang ditentukan dengan -w bendera, dengan nomor setelahnya, mulai dari 1 dan berlanjut ke atas. Satuan file_size adalah jutaan byte (1.000.000 byte, bukan 1.048.576 byte).

Jadi, Anda harus menentukan -C 100 untuk menghasilkan file 100MB.

Pada akhirnya, perintah Anda seharusnya adalah:

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

Ini akan memutar file (dengan nama trace1, trace2, ...) secara siklis, dengan periode 48, baik setiap 1800 detik (=30 menit) atau setiap 100MB, mana saja yang lebih dulu.


Memperluas jawaban flabdablet (mengubah -G 1800 ke -G 300 –rotasi setiap lima menit –hanya untuk tujuan pengujian),

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

akan memberi Anda %m=month , %d=day of month , %H=hour of day , %M=minute of day , %S=second of day , %s=millisecond of day , menghasilkan

/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

Sangat berguna untuk mengatur pelacakan untuk masalah intermiten yang mengganggu tersebut. Juga, jika Anda bukan root, Anda mungkin ingin sudo dan tentu saja menjadikannya nohup:

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

Menurut saya yang Anda butuhkan hanyalah

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

Penentu format strftime yang diharapkan -G dalam nama file -w tidak harus mewakili tanggal dan waktu yang lengkap. Dengan hanya %H dan %M di sana, dan waktu rotasi tepat setengah jam, setiap pemanggilan tcpdump yang diberikan hanya akan menghasilkan dua nilai %M yang berbeda dengan jarak setengah jam, dan file jejak kemarin akan ditimpa pada jam yang sama dan angka menit berputar lagi.


Linux
  1. Cara Mengenkripsi dan Mendekripsi File dan Direktori Menggunakan Tar dan OpenSSL

  2. Menggunakan sed untuk menemukan dan mengganti file teks di Linux

  3. Menemukan file yang dapat dieksekusi menggunakan ls dan grep

  1. Mentransfer File dan Folder Antar Komputer dengan Aman Menggunakan Croc

  2. Menggunakan file dan perangkat dalam wadah tanpa akar Podman

  3. Cara Mengirim dan Mengunduh File Menggunakan Rsync

  1. Cara menangkap dan menganalisis paket dengan perintah tcpdump di Linux

  2. wget vs curl:Cara Mengunduh File Menggunakan wget dan curl

  3. Menghapus file dengan rm menggunakan find dan xargs