diff options
Diffstat (limited to '')
-rw-r--r-- | debian/passwd.expire.cron | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/debian/passwd.expire.cron b/debian/passwd.expire.cron new file mode 100644 index 0000000..5e5b69f --- /dev/null +++ b/debian/passwd.expire.cron @@ -0,0 +1,57 @@ +#!/usr/bin/perl +# +# passwd.expire.cron: sample expiry notification script for use as a cronjob +# +# Copyright 1999 by Ben Collins <bcollins@debian.org>, complete rights granted +# for use, distribution, modification, etc. +# +# Usage: +# edit the listed options, including the actual email, then rename to +# /etc/cron.daily/passwd +# +# If your users don't have a valid login shell (ie. they are ftp or mail +# users only), they will need some other way to change their password +# (telnet will work since login will handle password aging, or a poppasswd +# program, if they are mail users). + +# <CONFIG> # + +# should be same as /etc/adduser.conf +$LOW_UID=1000; +$HIGH_UID=29999; + +# this let's the MTA handle the domain, +# set it manually if you want. Make sure +# you also add the @ like "\@domain.com" +$MAIL_DOM=""; + +# </CONFIG> # + +# Set the current day reference +$curdays = int(time() / (60 * 60 * 24)); + +# Now go through the list + +open(SH, "< /etc/shadow"); +while (<SH>) { + @shent = split(':', $_); + @userent = getpwnam($shent[0]); + if ($userent[2] >= $LOW_UID && $userent[2] <= $HIGH_UID) { + if ($curdays > $shent[2] + $shent[4] - $shent[5] && + $shent[4] != -1 && $shent[4] != 0 && + $shent[5] != -1 && $shent[5] != 0) { + $daysleft = ($shent[2] + $shent[4]) - $curdays; + if ($daysleft == 1) { $days = "day"; } else {$days = "days"; } + if ($daysleft < 0) { next; } + open (MAIL, "| mail -s '[WARNING] account will expire in $daysleft $days' $shent[0]${MAIL_DOM}"); + print MAIL <<EOF; +Your account will expire in $daysleft $days. Please change your password before +then or your account will expire +EOF + close (MAIL); + # This makes sure we also get a list of almost expired users + print "$shent[0]'s account will expire in $daysleft days\n"; + } + } + @userent = getpwent(); +} |