Linux中國

使用 Bash 腳本發送包含幾天內到期的用戶賬號列表的電子郵件

密碼強制策略對所有操作系統和應用程序都是通用的。如果要在 Linux 上實現密碼強制策略,請參閱以下文章。

默認情況下,大多數公司都會強制執行密碼強制策略,但根據公司的要求,密碼的時間周期會有所不同。通常每個人都使用 90 天的密碼周期。用戶只會在他們使用的一些伺服器上更改密碼,而不會在他們不經常使用的伺服器上更改密碼。

特別地,大多數團隊忘記更改服務帳戶密碼,這可能導致日常工作的中斷,即使他們配置有基於 SSH 密鑰的身份驗證。如果用戶帳戶密碼過期,基於SSH密鑰的身份驗證和 cronjob 將不起作用。

為了避免這種情況,我們創建了一個 shell 腳本來向你發送 10 天內到期的用戶帳戶列表。

本教程中包含兩個 bash 腳本可以幫助你收集系統中用戶到期天數的信息。

1) 檢查 10 天后到期的用戶帳戶列表

此腳本將幫助你在終端上檢查 10 天內到期的用戶帳戶列表。

# vi /opt/script/user-password-expiry.sh
#!/bin/sh
/tmp/user-expiry-1.txt
/tmp/user-expiry.txt
echo "-------------------------------------------------"
echo "UserName  The number of days the password expires"
echo "-------------------------------------------------"
for usern in u1 u2 u3 u4
do
today=$(date +%s)
userexpdate=$(chage -l $usern | grep 'Password expires' |cut -d: -f2)
passexp=$(date -d "$userexpdate" "+%s")
exp=`expr ( $passexp - $today )`
expday=`expr ( $exp / 86400 )`
echo "$usern $expday" >> /tmp/user-expiry.txt
done
cat /tmp/user-expiry.txt | awk &apos;$2 <= 10&apos; > /tmp/user-expiry-1.txt
cat /tmp/user-expiry-1.txt | column -t

將文件 user-password-expiry.sh 設置為可執行的 Linux 文件許可權。

# chmod +x /opt/script/user-password-expiry.sh

你將得到如下輸出,但用戶與天數可能不同。

# sh /opt/script/user-password-expiry.sh

----------------------------------------------UserName  The number of days the password expires
----------------------------------------------u1         -25
u2          9
u3          3
u4          5

2) 發送包含 10 天內到期的用戶帳戶列表的電子郵件

此腳本將發送一封包含 10 天內到期的用戶帳戶列表的郵件。

# vi /opt/script/user-password-expiry-mail.sh
#!/bin/sh
SUBJECT="Information About User Password Expiration on "`date`""
MESSAGE="/tmp/user-expiry.txt"
MESSAGE1="/tmp/user-expiry-1.txt"
TO="magesh.m@rentacenter.com"
echo "-------------------------------------------------" >> $MESSAGE1
echo "UserName  The number of days the password expires" >> $MESSAGE1
echo "-------------------------------------------------" >> $MESSAGE1
for usern in u1 u2 u3 u4
do
today=$(date +%s)
userexpdate=$(chage -l $usern | grep &apos;Password expires&apos; |cut -d: -f2)
passexp=$(date -d "$userexpdate" "+%s")
exp=`expr ( $passexp - $today )`
expday=`expr ( $exp / 86400 )`
echo "$usern $expday" >> $MESSAGE
done
cat $MESSAGE | awk &apos;$2 <= 10&apos; >> $MESSAGE1
mail -s "$SUBJECT" "$TO" < $MESSAGE1
rm $MESSAGE
rm $MESSAGE1

將文件 user-password-expiry-mail.sh 設置為可執行的 Linux 文件許可權。

# chmod +x /opt/script/user-password-expiry-mail.sh

最後,添加一個 cronjob 去自動執行腳本。每天早上 8 點運行一次。

# crontab -e
0 8 * * * /bin/bash /opt/script/user-password-expiry-mail.sh

你將收到一封與第一個腳本輸出類似的電子郵件。

via: https://www.2daygeek.com/bash-script-to-check-user-account-password-expiry-linux/

作者:Magesh Maruthamuthu 選題:lujun9972 譯者:qianmingtian 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國