ウェブで見つけたスクリプトを使って、ユーザーがサーバーに追加されたことを SA に通知するスクリプトを作成しました。/var/log/secure ファイルの違いを監視するために、5 分ごとにスクリプトを実行するように cron を設定しましたが、何も変更されていない場合は空の電子メールが送信されます。変更が行われていない場合は電子メールを送信しないようにするには、どのように編集すればよいでしょうか。スクリプトは以下のとおりです。
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