dwww Home | Show directory contents | Find package

#!/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();
}

Generated by dwww version 1.15 on Sun Jun 30 12:49:03 CEST 2024.