我以前从未发布过,但我经常在这里搜索,你们通常都非常有帮助。
我遇到了用户密码过期的问题,并且由于我不定期检查 /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