Exercices de script shell pour l'automatisation système

Cette collection présente des exercices pratiques de script shell pour l'automatisation et la gestion système.

1. Création d'un fichier journal d'utilisation du disque

Écrire un script qui demande à l'utilisateur un chemin de répertoire, crée un fichier journal nommé avec la date actuelle, y enregistre l'tuilisation du disque et supprime les fichiers plus vieux d'un an.

#!/bin/bash
# Script pour enregistrer l'utilisation du disque dans un journal système
echo "Entrez le chemin du répertoire pour les journaux:"
chemin=""
read chemin

if [ ! -d "$chemin" ]; then
    mkdir -p "$chemin"
fi

date_str=$(date +%Y-%m-%d)
fichier_journal="$chemin/$date_str.log"
df -h > "$fichier_journal"

# Supprimer les journaux plus anciens d'un an
find "$chemin" -type f -mtime +365 -exec rm -f {} \;

2. Comptage des adresses IP dans un fichier journal

Analyser un fichier journal pour compter le nombre d'accès par adresse IP. Utiliser des outils en ligne de commande pour extraire, trier et compter les occurrences.

# Extraire les adresses IP et compter les visites
grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' journal.log | sort | uniq -c | sort -rn | awk '{print $2, $1}'

3. Calcul de l'utilisation totale de la mémoire

Déterminer la mémoire totale consommée par tous les processus en cours sur le système.

# Calculer la mémoire totale utilisée par les processus
memoire_totale=$(ps aux | awk '{somme += $6} FIN {print somme}')
echo "Mémoire totale utilisée: $memoire_totale Ko"

4. Vérification de l'état des hôtes sur le réseau

Écrire un script qui vérifie la connectivité des hôtes dans un sous-réseau donné en envoyant des requêtes ping.

#!/bin/bash
# Vérifier la disponibilité des hôtes dans un réseau local
sous_reseau="192.168.1"
for ((hote=1; hote<255; hote++)); do
    adresse_ip="$sous_reseau.$hote"
    ping -c 1 -W 1 "$adresse_ip" > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "$adresse_ip est joignable"
    else
        echo "$adresse_ip est inaccessible"
    fi
done

5. Script de loterie pour sélection aléatoire

Créer un script qui génère aléatoirement des numéros de téléphone commençant par 182, puis en sélectionne 10 comme gagnants, en affichant les quatre derniers chiffres masqués.

#!/bin/bash
# Script de loterie avec génération et sélection aléatoire
fichier_numeros="participants.txt"
touch "$fichier_numeros"

# Générer des numéros aléatoires
generer_participants() {
    local total=$1
    for ((i=0; i<total do="" done="" echo="" for="" i="" j="" numero="">> "$fichier_numeros"
    done
}

# Éliminer les doublons
supprimer_doublons() {
    sort -u "$fichier_numeros" > "temporaire.txt"
    mv "temporaire.txt" "$fichier_numeros"
}

generer_participants 1000
supprimer_doublons

# Tirer au sort 10 gagnants
gagnants=()
for ((k=0; k<10; k++)); do
    ligne_aleatoire=$((RANDOM % $(wc -l < "$fichier_numeros") + 1))
    numero_gagnant=$(sed -n "${ligne_aleatoire}p" "$fichier_numeros"))
    gagnants+=("$numero_gagnant")
    # Retirer le numéro sélectionné de la liste
    sed -i "/$numero_gagnant/d" "$fichier_numeros")
done

echo "Numéros gagnants :"
for num in "${gagnants[@]}"; do
    suffixe=${num: -4}
    echo "182****$suffixe"
done</total>

Étiquettes: bash Shell scripting awk sed log analysis

Publié le 20 juillet à 21h16