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++ ))
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 ] ;
timeto7days=$(( $todaystime + 604800 ))
if [ $userexpireinseconds -le $timeto7days ];
mail -s "The account $username will expire less than 7 days" root
mail -s "The user account $username already expired" root

This script will send a mail to root about the status of expired and going to expire user accounts.

Related concept:   Linux /etc/passwd file explained