#!/usr/bin/perl #perl -MCPAN -e 'install Date::Calc' use Date::Calc qw(Delta_Days); @ll = `lastlog | grep -vi "never logged" | grep -vi "latest"`; $maxdays = 60; chomp ($ct = `date`); foreach $l (@ll) { chomp($l); my ($user,$rest) = split(/ +/,$l); my $lastdate = substr($l,43); my @pd = parsedate($lastdate); my @cd = parsedate($ct); $difference = Delta_Days(@pd, @cd); if (($difference >= $maxdays) && ($user ne "root")) { print "user:$user lastlogin:$difference days ago \t=> \tusermod -L $user\n"; system("usermod -L $user"); } } exit; sub parsedate { my $ds; $ds = $_[0]; $_ = $ds; my ($dow,$mon,$dd,$hms,$timez,$yyyy) = split(/ +/,$_); my $ix = index("-Jan-Feb-Mar-Apr-May-Jun-Jul-Aug-Sep-Oct-Nov-Dec","-$mon"); if ($ix == -1) { die "Illegal month specification: [$mon]"; } my $mno = substr("010203040506070809101112",($ix / 2),2); my ($hh,$mm,$ss) = split(/:/,$hms); $dd = "0" . $dd if length($dd) == 1; my @parsedate = ($yyyy, $mno, $dd); return @parsedate; }