ユーザーが作成されたときに通知するスクリプト

ユーザーが作成されたときに通知するスクリプト

ウェブで見つけたスクリプトを使って、ユーザーがサーバーに追加されたことを 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

関連情報