我根据在网上找到的信息创建了一个脚本,用于通知 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