Q. I have a requirement to check whose accounts are expired in Linux machine and send a mail to root user about the accounts. How can i achieve this in Linux?
Ans : Here is the script to check the account expires of the users in Linux
#Created on:09-02-2010 #Last modified:02-05-2010 #Purpose:To check the user account status in Linux #Author:Surendra Kumar Anne #The below command will grep all the users in shadow file #whose expiry time is set and send them to expirelist.txt cat /etc/shadow | cut -d: -f1,8 | sed /:$/d > /tmp/expirelist.txt totalaccounts=`cat /tmp/expirelist.txt | wc -l` for((i=1; i<=$totalaccounts; i++ )) do tuserval=`head -n $i /tmp/expirelist.txt | tail -n 1` username=`echo $tuserval | cut -f1 -d:` userexp=`echo $tuserval | cut -f2 -d:` userexpireinseconds=$(( $userexp * 86400 )) todaystime=`date +%s` #check if the user expired or not? if [ $userexpireinseconds -ge $todaystime ] ; then timeto7days=$(( $todaystime + 604800 )) if [ $userexpireinseconds -le $timeto7days ]; then mail -s "The account $username will expire less than 7 days" root fi else mail -s "The user account $username already expired" root fi done
This script will send a mail to root about the status of expired and going to expire user accounts.
Linux Shadow file explained in detail | The Linux Juggernaut
[...] No of days from Jan 1, 1970 the account was disabled: This is to show when the account was disabled. Do you want to find all the accounts which were disabled? Click here [...]