如何设置bash脚本以在Linux中创建新用户帐户时发送邮件



当在AWS Ec2 Linux中创建新的ssh用户帐户时,我需要设置bash脚本来发送邮件。

我使用了下面的脚本,但它不起作用。让我知道下面脚本中的任何错误,或者如果与此任务有关,请分享脚本。


#Set the variable which equal to zero
prev_count=0
count=$(grep -i "`date --date='yesterday' '+%b %e'`" /var/log/secure | egrep -wi 'useradd' | wc -l)
if [ "$prev_count" -lt "$count" ] ; then
# Send a mail to given email id when errors found in log
SUBJECT="ATTENTION: New User Account is created on server : `date --date='yesterday' '+%b %e'`"
# This is a temp file, which is created to store the email message.
MESSAGE="/tmp/new-user-logs.txt"
TO="mail-name@example.com"
echo  "Hostname: `hostname`" >> $MESSAGE
echo -e "n" >> $MESSAGE
echo "The New User Details are below." >> $MESSAGE
echo "+------------------------------+" >> $MESSAGE
grep -i "`date --date='yesterday' '+%b %e'`" /var/log/secure | egrep -wi 'useradd' | grep -v 'failed adding'| awk '{print $4,$8}' | uniq | sed 's/,/ /' >>  $MESSAGE
echo "+------------------------------+" >> $MESSAGE
mail -s "$SUBJECT" "$TO" < $MESSAGE
rm $MESSAGE
fi```

我对您的脚本进行了一些改进。

  • 在大多数Linux系统上/var/log/secure不存在。有关帐户的记录通常记录在/var/log/auth.log
  • 尽可能避免写入文件。在这种情况下,我让所有的东西都直接进入mail

我的脚本版本:

#!/bin/bash
#Set the variable which equal to zero
prev_count=0
count=$(grep -s -i "`date --date='yesterday' '+%b %e'`" /var/log/auth.log /var/log/secure | egrep -wi 'useradd' | wc -l)
if [ "$prev_count" -lt "$count" ] ; then
# Send a mail to given email id when errors found in log
SUBJECT="ATTENTION: New User Account is created on server : `date --date='yesterday' '+%b %e'`"
TO="mail-name@example.com"
( 
echo  "Hostname: `hostname`"; 
echo -e "n"; 
echo "The New User Details are below."; 
echo "+------------------------------+"; 
grep -s -i "`date --date='yesterday' '+%b %e'`" 
/var/log/auth.log /var/log/secure | 
egrep -wi 'useradd' | grep -v 'failed adding'| 
awk '{print $4,$8}' | uniq | sed 's/,/ /'; 
echo "+------------------------------+"; 
) | mail -s "$SUBJECT" "$TO"
fi

相关内容

最新更新