Tcpdump

tcpdump 基於時間的圓形旋轉

  • May 24, 2017

儘管閱讀了手冊頁並蒐索了 StackExchange 和更廣泛的網際網路,但我未能找到一種方法來製作基於時間的、旋轉的、有限計數的 tcpdump。

例如,我希望每小時有一個文件,不超過 24 小時。但我不希望 tcpdump 在 24 個文件後停止,我希望它刪除最舊的文件並創建一個新文件。我希望它永遠執行,但永遠不要超過 24 個文件。

手冊頁似乎表明,如果你-C -W -G一起使用,你可以實現這一點,但我的測試並沒有證明這可以工作。

使用5-G -Wstrftime文件後退出

# tcpdump -w foo.%F_%H%M%S -G 5 -W 5 -Z root port 22
tcpdump: listening on enp0s3, link-type EN10MB (Ethernet), capture size 65535 bytes
Maximum file limit reached: 5

將這三個一起使用似乎只是限制了每個時間範圍內生成的文件數量。例如,下面將在每個 5s 視窗中擷取多達 5 x 1MB 的文件。如果 5s 內超過 5MB,則只保留最後的 5MB。但是,總文件的數量將永遠增長。

# tcpdump -w foo.%F_%H%M%S -G 5 -C 1 -W 5 -Z root port 22

這將擷取 5 x 1MB 文件並在一個環中覆蓋。

# tcpdump -w foo -C 1 -W 5 -Z root port 22

但我想按時間旋轉,而不是按大小旋轉。

以每分鐘無限生成六個擷取文件為例:

# tcpdump -i eth0 -G 10 -w dump-%S.pcap.

請注意,%S模板文件名中只需要指定第二個時間變數,旋轉時間範圍為 10 秒,由-G. 當擷取時間從分鐘到分鐘變化時,tcpdump覆蓋之前的秒標記文件。

現在,可以通過以下方式實現每小時輪換和每日循環擷取:

# tcpdump -i eth0 -G 3600 -w dump-%H.pcap.

同樣的原理也適用於此。tcpdump每 3600 秒創建一個新文件,並以目前小時命名。更改日期後,前一小時的文件將依次替換。

引用自:https://unix.stackexchange.com/questions/341380