我根據在網路上找到的內容創建了一個腳本,用於通知 SA 用戶被添加到伺服器。我用 cron 設定了每 5 分鐘運行一次腳本來監視 /var/log/secure 檔案中的差異,但如果沒有任何更改,它仍然會發送一封空白電子郵件。如果不進行任何更改,我如何編輯它以不發送電子郵件。腳本如下:
file="/var/log/secure"
while cmp "$file" "${file}_bkp"; do
sleep 2
done
diff "$file" "${file}_bkp" | grep -e useradd | mailx -s "User Added On Server" [email protected]
cp "$file" "${file}_bkp"
答案1
我同意這樣的評論,即一種更有效率的檢查方法是監視/etc/passwd
文件而不是分析日誌文件,日誌文件可能是一個需要處理的大而密集的文件。如果/etc/passwd
偵測到已更改,您可以比較文件的備份以查看已更改的內容。
您可以根據自己的具體需求進行客製化的簡單範例。
# One-off initial Set up
md5 -q /etc/passwd > /etc/passwd.md5
cp /etc/passwd /etc/passwd.compare
# Cron job script logic
if [[ $(md5 -q /etc/passwd) != $(< /etc/passwd.md5) ]]
then
# The passwd file has changed, do something!
#
# Diff /etc/passwd with /etc/passwd.compare to get details, etc.
# Send an alert with details
#
# Prepare for the next time a change happens.
md5 -q /etc/passwd > /etc/passwd.md5
cp -f /etc/passwd /etc/passwd.compare
#
fi