Shell script to display user account expiry details
Q.Can we write a shell script to send notification to administrator or root about the accounts which are going to expire?
Ans : Here is a small script which will give you mail on the accounts which are expired and which are going to expire in 7 days. You are free to use and modify this script for your work.
#!/bin/bash
#Author:Surendra Kumar Anne
#Created on:09-02-2012 #Purpose:To check the user account expire status in Linux, unix, BSD etc 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 multiple mails to root about the status of expired and going to expire user accounts.
Hi I'm trying to use your script but when I run first line from the script the expirelist.txt is empty. when I remove this part sed /:$/d then I have list of all users from shadow file with : on the end of each line.
ReplyDeleteIs that correct ?