使用 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 '$2 <= 10' > /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 'Password expires' |cut -d: -f2)
passexp=$(date -d "$userexpdate" "+%s")
exp=`expr \( $passexp - $today \)`
expday=`expr \( $exp / 86400 \)`
echo "$usern $expday" >> $MESSAGE
done
cat $MESSAGE | awk '$2 <= 10' >> $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
訂閱“Linux 中國”官方小程式來檢視
相關文章
- 教你如何用 Bash 指令碼傳送新使用者建立的郵件指令碼
- 在系統建立新使用者時傳送郵件的 Bash 指令碼指令碼
- 如何傳送電子郵件到別人郵箱?電子郵件傳送的方法
- 用oracle傳送電子郵件Oracle
- 解決Moodle在上傳使用者時無法自動傳送賬號密碼郵件密碼
- C# 傳送電子郵件原始碼片段C#原始碼
- 如何使用 ABAP 程式碼傳送帶有 PDF 附件的電子郵件
- SQL Server 非sysadmin賬號傳送郵件SQLServer
- 電子郵件協議及GO傳送QQ郵件協議Go
- SpringBoot傳送電子郵件(附原始碼)Spring Boot原始碼
- Shell指令碼中傳送html郵件的方法指令碼HTML
- 【主機】傳送郵件指令碼的改進指令碼
- 如何使用ABAP傳送帶有PDF格式附件的電子郵件
- 在VC中呼叫預設的電子郵件程式傳送郵件 (轉)
- SpringBoot實現傳送電子郵件Spring Boot
- 在Linux命令列傳送電子郵件Linux命令列
- rman備份指令碼 傳送郵件通知指令碼
- ASP.NET2.0傳送電子郵件示例程式碼ASP.NET
- 4個可以傳送完整電子郵件的命令列工具命令列
- 傳送電子郵件的4個Linux命令列工具Linux命令列
- .net類庫中傳送電子郵件的方法總結
- 電子郵件哪個好用?口碑不錯的郵件傳送平臺推薦!
- Python 傳送郵件的幾種方式Python
- 郵件的傳送
- Linux配置msmtp+mutt傳送郵件(可放在指令碼中定時傳送郵件)Linux指令碼
- 從Oracle9i中傳送電子郵件Oracle
- 在SQL Server中使用儲存過程傳送電子郵件SQLServer儲存過程
- 利用SQL Server 2005資料庫郵件傳送電子郵件SQLServer資料庫
- 使用phpmailer傳送郵件PHPAI
- 使用JavaMail傳送郵件JavaAI
- 使用nodemailer傳送郵件AI
- 使用Zabbix服務端本地郵箱賬號傳送報警郵件及指定報警郵件操作記錄服務端
- 在ASP.NET中傳送電子郵件的例項教程ASP.NET
- ASP.NET 2.0傳送電子郵件中存在的問題ASP.NET
- Ubuntu的郵件傳送Ubuntu
- win10 電子郵件和賬戶選項裡的賬號如何刪除Win10
- 【陳晨】ASP.NET 2.0中傳送電子郵件ASP.NET
- 在.NET框架應用程式中傳送電子郵件框架