#!/usr/bin/perl
#
# ctl_users.pl : script perl surveillant des comptes utilisateurs

# en-tete en debut de chaque page du rapport

format top =

Username (UID)      Home directory       Disk Space   Security
-------------------------------------------------------------------
.

# format de chaque ligne ecrites vers STDOUT

format STDOUT =
@<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<< @>>>>>>>>> @<<<<<<<<<<
$uname,          $home_dir,       $disk,     $warn
.

open (PASSWD, "/etc/passwd") || die "Can't open passwd: $!\n";

USER:
while (<PASSWD>) { # boucle sur les lignes du fichier mot de passe
        chop;
        # listes sont entouree de parantheses
        ($uname, $pass, $uid, $gid, $junk, $home_dir, $junk) = split(/:/);
        # supprimer retour chariot, analyser ligne, ignorer entrees ininteressantes
        if ( $uname eq "root" || $uname eq "nobody" || substr($uname,0,2) eq "uu" ||
        $uid <= 100 && $uid > 0 ) { next USER; }
        # positionner variable sur probleme de securite potentiel
        $warn = ($uid == 0 && $uname ne "root") ? "** UID=0" : " ";
        $warn = ($pass ne "!" && $pass ne "*") ? "** CK PASS" : $warn;
        # .= signifie concatenation de chanines de caractetes
        $uname .= " ($uid)"; # ajouter UID a username
        # lancer "du" sur le repertoire principal & extraire taille totale
        if (-d $home_dir && $home_dir ne "/") {
                $du = `du -s -k $home_dir` ; chop($du);
                ($disk, $junk) = split(/\t/,$dh); $disk .= "K";
                }
        else { $disk = $home_dir eq "/" ? "skipped" : "deleted"; }
        write; # ecrire ligne formattee sur sortie standard
        }
exit;
