jms@tardis.Tymnet.COM (Joe Smith) (09/07/90)
In article <11722@bsu-cs.bsu.edu> koffi@bsu-cs.bsu.edu (There will be enough room in HEAVENS for all of US) writes: >Hello Cybersapce, >I am looking for a shell script that could do the following task: > 1) Create a file of users (login name followed by the real life name) >who haven't logged on the system since the year 1988. One of our programmers (Ed Mooring) is using this: (Adjust the "thresh"). #!/usr/local/bin/perl $ll_t = "LA8A16"; push (@ARGV,'/var/adm/lastlog') if $#ARGV < 1; while(($name,$pw,$uid,@rest) = getpwent) { next if $pw eq "*"; $uname{$uid}=$name; $lasttime{$uid} = -1; } foreach (@ARGV) { open (LL,$_) || die "open $_ $!"; $i=0; for ($i = 0;read(LL,$foo,28);$i++) { next unless $uname{$i}; #skip names not in password file ($when, $where, $host) = unpack($ll_t,$foo); if ($lasttime{$i} <=$when) { # more recent login $lasttime{$i} = $when; $lasthost{$i} = $host; $lastwhere{$i} = $where; } } close(LL); } $thresh = time - 90 * 86400; sub bymag {$a-$b;} @ids = sort bymag keys(%uname); foreach (@ids) { next if $lasttime{$_} > $thresh; if ($lasttime{$_}) { ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($lasttime{$_}); $mon++; print "$_($uname{$_}) $mon/$mday/$year $lastwhere{$_} $lasthost{$_}\n" ; } else { print "$_($uname{$_}) never logged in\n"; } } -- Joe Smith (408)922-6220 | SMTP: jms@tardis.tymnet.com or jms@gemini.tymnet.com BT Tymnet Tech Services | UUCP: ...!{ames,pyramid}!oliveb!tymix!tardis!jms PO Box 49019, MS-C41 | BIX: smithjoe | 12 PDP-10s still running! "POPJ P," San Jose, CA 95161-9019 | humorous dislaimer: "My Amiga speaks for me."