Bash:尋找已用於非自動存取嘗試的所有 IP 位址

Bash:尋找已用於非自動存取嘗試的所有 IP 位址

我正在 bash 上的虛擬機器上工作。我被要求使用 auth.log 檔案來尋找所有在未經授權的情況下嘗試存取電腦的 IP 位址。我似乎沒有找到我的問題的任何答案。這是一個例子:在此輸入影像描述

所有傳回的行必須寫入我的共用檔案/mnt/analysis/traitement/cueillette.txt。請幫忙 !謝謝

答案1

您不需要將 grep 插入 grep (這幾乎總是表明您正在採取一種低效、誤導的方法。 sed僅此一項就足以完成此任務。或awk. 或perl),這sudo su root cat只是無稽之談。

嘗試這個:

$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \ 
    /media/sf_partageAuth/auth.log > /mnt/analyse/traitement/cueillette.txt 

對於每行匹配“身份驗證失敗”的行(注意,不是“真實性cation"),此sed腳本刪除從行開頭到(包括)的所有內容rhost=,以及 IP 位址之後的所有內容,然後列印該行。

它使用sed's-E選項來擴展正則表達式,因此()+無需轉義即可工作。

請注意,雖然該sed命令以 root 使用者身份運行sudo,但輸出重定向不是 - 這是在原始非 root shell 中完成的。如果您也需要 root 權限才能寫入輸出文件,請使用 運行teesudo例如:

$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \
    /media/sf_partageAuth/auth.log | 
    sudo tee /mnt/analyse/traitement/cueillette.txt > /dev/null

相關內容