Shell > log file utilities

Titrelog file utilities
Postée le05-12-2010
Affichée271
Mini-lien
Description

Look into log files and make a resume of it

EtatNe contient pas d'erreurs. Ne contient pas d'erreurs.
Code d'insertion
Options
Afficher les numéros de lignes  Mettre la source en plein ecran  Selectionner la source  Partager sur Facebook 
Téléchargement Telecharger en format txt  Telecharger en format pdf  Telecharger en format sh
Plein ecran
#!/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 !"