script de recherche des ordinateurs dont le mot de passe samba n'a pas été changé depuis 2 ans

#!/bin/bash
# Author : Eric Quinton
# Date : 16/04/2013
# Script permettant de rechercher les comptes des machines dans l'annuaire
# LDAP, dont la date de modification du mot de passe samba est anterieure a la date soit du
# jour moins deux ans, soit la date indiquee
BASE=ou=hosts,ou=societe,o=organisation,c=fr
SERVEUR=ldap://monserveur
ATTRIBUT=sambaPwdLastSet
HELP=0
ANNEEANT=2
MAILSUJET="Annuaire LDAP - recherche des ordinateurs dont le mot de passe SAMBA n'a pas change depuis $ANNEEANT annees"
MAILCMD=/usr/bin/mail
TMP=/tmp/listeHostsAnciens.txt
# Recuperation des parametres
while getopts "d:-:f:hm:" OPT
do
    # gestion des options longues
    if test $OPT = '-' ; then
        LONGOPT="${OPTARG%%=*}"
        OPTARG="${OPTARG#*=}"
        case $LONGOPT in
            date) OPT="d";;
            help) OPT="h";;
            file) OPT="f";;
            courriel) OPT="m";;
                        email) OPT="m";;
            *) HELP=1;;
        esac
    fi
    case $OPT in
        d) DATE=$OPTARG;;
        f)FICHIER=$OPTARG;;
                m) COURRIEL=$OPTARG;;
        h) HELP=1;;
        *) HELP=1;;
    esac
done
# affichage de l'aide
if test $HELP = 1; then
    echo "Script de recherche des ordinateurs anciens dans un annuaire LDAP"
    echo "[--date=dd/mm/yyyy|-d dd/mm/yyyy] : date a partir duquel le compte n'a pas ete modifie"
    echo "[--fichier=nomFichier|--file=nomFichier|-f nomFichier] : nom du fichier recevant les resultats de la recherche"
        echo "[--courriel=adresse|--email=adresse|-m adresse] : nom de la boite devant recevoir la liste"
    echo "[--help|-h] : cette aide..."
    exit 0
fi
# formatage de la commande ldapsearch
LDAPSEARCH="ldapsearch -H $SERVEUR -b $BASE -x"
# formatage de la date
if test -z $DATE; then
    ANNEE=$((`date "+%Y"`-$ANNEEANT))
    MOIS=`date "+%m"`
    JOUR=`date "+%d"`
else
    ANNEE=${DATE:6:4}
    MOIS=${DATE:3:2}
    JOUR=${DATE:0:2}
fi
DATETIMESTAMP=$ANNEE$MOIS$JOUR"000000Z"
DATEINT=`date -d "$ANNEE-$MOIS-$JOUR" "+%s"`
echo "Date de reference : "$JOUR/$MOIS/$ANNEE > $TMP
# echo "Date au format timestamp : "$DATETIMESTAMP
# echo "Date au format integer : "$DATEINT
if ! test -z $FICHIER; then
    echo "Fichier contenant la liste des identifiants : "$FICHIER
    if test -f $FICHIER; then
        read -p "le fichier $FICHIER est existant. Voulez-vous le supprimer [O/n] ?" REPONSE
        if test -z $REPONSE; then
            REPONSE="O"
        fi
        if test "$REPONSE" = "O" -o "$REPONSE" = "o"; then
            rm -f $FICHIER
            echo "Fichier supprime"
        else
            echo "Traitement abandonne"
            exit 1
        fi
    fi
fi
# Recuperation de la liste de tous les hosts
for IDENTIFIANT in $($LDAPSEARCH -S uid uid|grep ^uid|sed s/uid:\ //)
do
    # test de la date samba d'expiration du compte
DATEEXPIRATION=$($LDAPSEARCH "(uid="$IDENTIFIANT")" $ATTRIBUT|grep ^$ATTRIBUT|sed s/$ATTRIBUT:\ //)
    if ! test -z $DATEEXPIRATION; then
        if test "$DATEEXPIRATION" -le "$DATEINT"; then
            echo -e "$IDENTIFIANT\tderniere date de modification du compte : `date -d @$DATEEXPIRATION "+%d/%m/%Y"`" >> $TMP
            if ! test -z $FICHIER; then
                echo $IDENTIFIANT >> $FICHIER
            fi
        fi
    fi
done
if ! test -z $COURRIEL; then
        $MAILCMD -s "$MAILSUJET" "$COURRIEL" < $TMP
else
        cat $TMP
fi