在系統建立新使用者時傳送郵件的 Bash 指令碼

2019-08-07 23:28:00

目前市場上有許多開源監測工具可用於監控 Linux 系統的效能。當系統到達指定的閾值時,它將傳送郵件提醒。

它會監控 CPU 利用率、記憶體利用率、交換記憶體利用率、磁碟空間利用率等所有內容。但我不認為它們可以選擇監控新使用者建立活動,並行送提醒。

如果沒有,這並不重要,因為我們可以編寫自己的 bash 指令碼來實現這一點。

我們過去寫了許多有用的 shell 指令碼。如果要檢視它們,請點選以下連結。

這個指令碼做了什麼?它監測 /var/log/secure 檔案,並在系統建立新帳戶時提醒管理員。

我們不會經常執行此指令碼,因為建立使用者不經常發生。但是,我打算一天執行一次這個指令碼。因此,我們可以獲得有關使用者建立的綜合報告。

如果在昨天的 /var/log/secure 中找到了 “useradd” 字串,那麼該指令碼將向指定的郵箱傳送郵件提醒,其中包含了新使用者的詳細資訊。

注意:你需要更改郵箱而不是使用我們的郵箱。

# vi /opt/scripts/new-user.sh
#!/bin/bash#Set the variable which equal to zeroprev_count=0count=$(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="[email protected]"  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 $MESSAGEfi

new-user.sh 新增可執行許可權。

$ chmod +x /opt/scripts/new-user.sh

最後新增一個 cron 任務來自動化執行它。它會在每天 7 點執行。

# crontab -e0 7 * * * /bin/bash /opt/scripts/new-user.sh

注意:你將在每天 7 點收到一封郵件提醒,但這是昨天的紀錄檔。

你將會看到類似下面的郵件提醒。

# cat /tmp/logs.txtHostname: 2g.server10.comThe New User Details are below.+------------------------------+2g.server10.com name=magesh2g.server10.com name=daygeek+------------------------------+