以前に投稿したことはありませんが、ここで頻繁に検索し、皆さんは通常非常に役に立ちます。
ユーザーパスワードの有効期限が切れるという問題がありました。 /var/cron/log を定期的にチェックしていないため、これらのユーザーの有効期限が切れていることを知らず、特定の夜間ジョブが実行されません。
このスクリプトを使用して、これらの特定のユーザーのパスワードの有効期限を確認し、自分自身にリマインダーを送信できるようにしたいと考えています。
オンラインでたくさんの例を見ましたが、自分が書いていることを理解したいので、理解できないコードを借用したり編集したりすることがあり、コードが何をしているのかをよりよく学ぶのに役立ちます.
以下は、私が理解して操作できるように書いたコードですが、すべての管理者ユーザーにユーザー名が期限切れになるという電子メールをまだ受け取っているため、機能していないようです。
助言がありますか?これが長くなってしまった場合は申し訳ありません
コード:
#Author:Emmanuel Iroanya Jr
#Edited:
#Date:December 20th, 2012
#Purpose: The purpose of this is to check the Shadow table for the epoch value and warn the users / Email of Password Expiration seven days in advance
ID=`id | cut -d ' ' -f 1`
if [[ "${ID}" != "uid=0(root)" ]]
then
echo "You Need To Be Root To Run This Script, Please and Thank You"
exit 1
fi
export Shadow=/etc/shadow
EpochSh=`perl -e 'print time, "\n"'`
export Hostname=`hostname`
#Our SSE Email Address that will get notification
export Email="emmanuel@mycompany.com"
for line in `cat $Shadow | grep adm`
do
echo $line
done >passFile.txt
for i in `cat passFile.txt`
do
User=`echo $i |cut -d ':' -f 1`
MaxDay=`echo $i | cut -d ':' -f 5`
echo "$MaxDay"
Epoch=`echo $i |cut -d ':' -f 3`
Eval=`$MaxDay+$Epoch-$EpochSh`
echo "$Eval"
if [[ $Eval -lt 7 ]]
then
echo "Password for unix user $User on `hostname` is going to expire in less than a week. Please change it ASAP" | mailx -s 'Password Expiration ' $Email
elif [[ $Eval -le 0 ]]
then
echo "PASSWORD FOR USER $User HAS EXPIRED.PLEASE CHANGE IT ASAP TO AVOID PRODUCTION CRON JOBS FROM FAILING AND THE RESULTING LATE NIGHT CALLS" | mailx -s 'Password Expiration ' $Email
fi
done