#!/bin/bash
DIR="/var/infosys/"
DESTINATION=$1
echo "Voulez vous travailler sur certains dossier en particulier(1) ou sur tous les dossier(2) ?"
read ANSWER
NBRSELECTION=0
# si on choisi de faire une selection de dossier
if [ $ANSWER -eq 1 ]; then
# pour chaque dossier
for SELDIR in `ls -D $DIR`; do
echo "Voulez vous prendre ce dossier [$SELDIR] ? (0/1)"
read TAKE
# si on choisi de le prendre avec
if [ $TAKE -eq 1 ]; then
# on ajoute le dossier au tableau des selection
SELECTION[$NBRSELECTION]=$SELDIR
((NBRSELECTION++))
fi
done
# sinon on prend tous les dossier
elif [ $ANSWER -eq 2 ]; then
for EACH in `ls -D $DIR`; do
SELECTION[$NBRSELECTION]=$EACH
((NBRSELECTION++))
done
# si on met une autre valeur on sort du programme
else
echo "Vous n'avez pas mis une bonne valeur"
exit
fi
# si le dossier existe deja
if [ -d $DESTINATION ]; then
# do nothing
echo "repertoire entre en parametre valide !"
else
# creation du dossier de destination
mkdir $DESTINATION
fi
# ajouter un fichier contenant les informations sur les partitions du systeme
df -hT > "${DESTINATION}/infoSys.info"
# var qui parcours le tableau pour les dossier selectionner
J=0
# var qui numerote les fichier temporaire
i=0
# on va lister chacun des dossier contenu dans DIR
while [ $J -lt $NBRSELECTION ]; do
# on recree le chemin pour arriver au dossier
CHEMIN="${DIR}${SELECTION[$J]}/"
# on cree un fichier temporaire pour traiter tout les log du dossier en cours
TMPFILE="./file${i}.txt"
# on compte le nombre de fichier qu'il y a dans le repertoire
NBROFFILE=$(ls -l $CHEMIN | egrep -c '^-')
# si il n'y a pas de fichier cela ne sert a rien de travailler dessus
if [ $NBROFFILE -ne 0 ]; then
# pour tout les fichier dans le dossier en cours
for LOGFILE in `ls $CHEMIN`; do
# on va lire chaque ligne
while read LINE; do
# recuperer le pseudo de l'utilisateur
USER=${LINE%%:*}
# aller chercher son UID
ID=$(id -u $USER)
# on imprime la nouvelle ligne reformatee dans le fichier temporaire
echo "${ID}:${LOGFILE%'.log'}:${LINE}" >> $TMPFILE
# on fait cela pour chaque ligne du fichier
done < $CHEMIN$LOGFILE
done
# on va maintenant trier le fichier temporaire et l'ecrire dans le fichier final
sort -n $TMPFILE > "${DESTINATION}/${SELECTION[$J]}.info"
# on supprimer maintenant le fichier temporaire
rm $TMPFILE
# on incremente la var qui permet de differentier les fichier temporaire
((i++))
fi
((J++))
done
echo "le travail a ete effectue avec succes !"