尋找具有時間範圍 fileA 和 fileB 的文件

尋找具有時間範圍 fileA 和 fileB 的文件

我正在編寫腳本,我將在其中接收時間和資料夾名稱的輸入,我需要找到一個文件(snort.log.*),該文件落在我的用戶輸入的時間範圍內(他將看到警報文件以粗體顯示)時間戳並輸入實際 snort.log.** 文件的時間,其中包含攻擊的詳細信息,警報文件僅包含元數據)這裡是目錄示例

[jump1@widids01 snort-3]# ls -ltr |尾-6
-rwxr-x--- 1 snort snort 301731 2月2日18:18 snort.log.1517557015
-rwxr-x--- 1 snort snort 5720853 2月5日21:11 snort.log.1517563475
-rwxr-x--- 1 鼻息 鼻息 3566073 2 月 7 日 16:00 snort.log.1517832965
-rwxr-x--- 1 snort snort 18999 2月7 20:46 snort.log.1518003111
-rwxr-x--- 1 snort snort 20705098 2月15日19:00 snort.log.1518004113
-rw-------- 1 鼻息 鼻息 357271 2 月 15 日 22:22 snort.log.1518688923
-rwxr-x--- 1 snort snort 50782147 2 月 15 日 22:22 警報
[jump1@widids01 snort-3]# tail -3 警報
02/15-18:22:02.204655   [1:2403380:38412] ET CINS 主動威脅情報信譽不良 IP TCP 組 41 [分類:雜項攻擊] [優先順序:2] {TCP} 
02/15-22:22:03.335107 [1:2403408:38412] ET CINS 主動威脅情報信譽不佳 IP TCP 組 55 [分類:雜項攻擊] [優先順序:2] {TCP} 
02/15-22:22:03.335107   [1:2403408:38412] ET CINS 主動威脅情報信譽不佳 IP TCP 組 55 [分類:雜項攻擊] [優先順序:2] {TCP}

我在這裡面臨的問題snort.log.[epoch][epoch]文件生成時間,所以如果用戶輸入

測試用例1:

time:2015-02-15-22:28:02 

snort.log.file如何為他提供攻擊資料包含位置的匹配

測試用例2:

time:2015-02-15-18:22:02

snort.log.file如何為他提供攻擊資料包含位置的匹配

我嘗試過但find . -newermt "2018-02-15 18:38:00" ! -newermt "2018-02-15 18:39:00"沒有得到正確的輸出。

答案1

假設您有這樣的輸入:

time="time:2015-02-15-18:22:02"

然後你可以將其轉換為 Unix 時間戳記(自紀元以來的秒數)並將其保存在變數中timestamp

time=$(date -d$(<<<"$time" sed 's/time:\(.*\)-/\1T/') +%s)

sed在這裡使用去掉前綴time:並將日期和時間之間的冒號更改為T(ISO 8601),date然後用於將時間戳轉換為自紀元以來的秒數。

根據此時間戳代表的內容,您可以使用它find來輸出日誌的檔案名稱:

  • 如果檔案名稱已經包含時間戳,則可以snort.log.$time直接使用

  • 如果是文件的修改時間:

    find . -type f -name "*snort.log.*" -newermt @$(($time-1)) ! -newermt @$time
    

    這將找到修改時間在time- 1 秒和time.

  • 如果您需要查找給定時間戳之後最舊的日誌文件,您可以使用sortand head

    find . -type f -name "*snort.log.*" -newermt @$(($time-1)) -print0 | sort -z | head -zn1
    
  • 如果您需要找到日誌檔案(以任何方式)包含給定的時間戳,使用grep

    grep -l $time *
    

    如果您有很多長日誌文件,可以將其與find和/或parallel使其更快,例如:

    find . -type f -name "*snort.log.*" -newermt @$(($time-1)) -exec grep -l $time {} +
    

相關內容