0% ont trouvé ce document utile (0 vote)
68 vues4 pages

TP Conception

Transféré par

israelmukendi423
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
68 vues4 pages

TP Conception

Transféré par

israelmukendi423
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Question I

Voici le script Bash capable d’effectuer les taches exigées:


#!/bin/bash
# Vérifie si un argument a été fourni
if [ $# -eq 0 ]; then
echo "Erreur : Aucun répertoire spécifié."
exit 1
fi

# Récupère le répertoire passé en argument


repertoire="$1"

# Vérifie si le répertoire existe


if [ ! -d "$repertoire" ]; then
echo "Erreur : Le répertoire '$repertoire' n'existe pas."
exit 1
fi

# Compte le nombre total de fichiers et de sous-répertoires (de manière récursive)


nombre_fichiers=$(find "$repertoire" -type f | wc -l)
nombre_sous_repertoires=$(find "$repertoire" -type d | wc -l)

# Calcule la taille totale des fichiers (en octets)


taille_totale=$(du -sb "$repertoire" | cut -f1)

# Affiche les résultats


echo "Nombre de fichiers : $nombre_fichiers"
echo "Nombre de sous-répertoires : $nombre_sous_repertoires"
echo "Taille totale des fichiers : $taille_totale octets"

# Génère un fichier de log


date_heure=$(date +"%Y-%m-%d %H:%M:%S")
echo "Date et heure d'exécution : $date_heure" > [Link]
echo "Nombre de fichiers : $nombre_fichiers" >> [Link]
echo "Nombre de sous-répertoires : $nombre_sous_repertoires" >> [Link]
echo "Taille totale des fichiers : $taille_totale octets" >> [Link]

echo "Le fichier de log a été généré dans le répertoire courant."

Voici l’exécution du script ci-haut en image:

Voici le fichier log généré:

Question II
Voici le script Bash nous permettant de résoudre ce problème:
#!/bin/bash

# Répertoire contenant les fichiers logs


repertoire_logs="/chemin/vers/votre/repertoire/logs"

# Vérifie si le répertoire existe


if [ ! -d "$repertoire_logs" ]; then
echo "Erreur : Le répertoire '$repertoire_logs' n'existe pas."
exit 1
fi

# Archive les fichiers de logs plus anciens qu'un mois


archive_date=$(date -d "1 month ago" +%Y-%m-%d)
archive_fichier="logs_archive_$archive_date.[Link]"
find "$repertoire_logs" -type f -name "*.log" -mtime +30 -exec tar -czvf "$archive_fichier"
{} +

# Analyse les fichiers de logs restants pour extraire les lignes contenant "ERROR"
nombre_erreurs=0
for fichier_log in "$repertoire_logs"/*.log; do
if grep -q "ERROR" "$fichier_log"; then
grep "ERROR" "$fichier_log" >> errors-$(date +%Y-%m-%d).log
nombre_erreurs=$((nombre_erreurs + $(grep -c "ERROR" "$fichier_log")))
fi
done

# Affiche le nombre total d'erreurs


echo "Nombre total d'erreurs : $nombre_erreurs"

echo "Le fichier d'archive des logs est : $archive_fichier"


echo "Les lignes d'erreurs ont été enregistrées dans errors-$(date +%Y-%m-%d).log"
L’image ci-dessous est l’illustration de l’exécution de ce script:
Il est à noter que le système installé est client, donc à l’occurrence ne peut
offrir de services tel un système serveur (ex; win server, linux server...)

Vous aimerez peut-être aussi