Utilitaires
Scripts
Divers
Jeux
Rechercher
Quillevere.net
Paradigmes informatiques

Monitorer les accès à un serveur (script Linux)

28/05/2020

Voici deux scripts surveillant à intervalles réguliers les accès entre deux machines. Ils peuvent être mis en place rapidement à des fins de tests et sur une période définie :

  • Le premier script surveille la connexion entre la machine locale et un site Internet
  • Le second script surveille un montage réseau entre la machine locale et une machine distante

Monitorer l'accès à une adresse Internet

Ce script utilise Netcat pour faire un ping vers une adresse et écrit le résultat dans un fichier de log unique.

  • Créez le fichier :
    nano ping_serveur.sh
  • Collez le contenu suivant :
    #!/bin/sh
    SERVEUR=google.fr
    PORT=80
    ESSAIS=1000
    INTERVALLE=10

    for ((i=1; i<=$ESSAIS; i++))
    do
        if nc -z -v -w2 $SERVEUR $PORT > /dev/null 2>&1 ; then
            echo "$(date) Réussi" >> "log_"$SERVEUR"_"$PORT
        else   
            echo "$(date) Echec" >> "log_"$SERVEUR"_"$PORT
        fi

        sleep $INTERVALLE;
    done
  • Précisez le nom du serveur, le port, le nombre d'essais et l'intervalle de temps entre deux essais.
    Le ping est effectué avec nc, en mode verbeux (-v), sans envoyer de données (paramètre -z) et en attendant un maximum de 2 secondes (paramètre -w2)
  • Sauvez et fermez le fichier
  • Attribuez les droits en exécution :
    chmod +x ping_serveur.sh
  • Lancez le traitement :
    nohup ./ping_serveur.sh &

Ainsi paramétré, un fichier de log avec le nom du serveur sera créé et alimenté toutes les X secondes, vous permettant de consulter les résultats à votre convenance.

Monitorer un point de montage

Ce script alimente un fichier de log et/ou envoie un email si un point de montage est indisponible. Il teste à la fois le serveur (ping), le répertoire monté et un sous-répertoire du point de montage.

#!/bin/bash

# Répertoire de destination du point de montage
MOUNT_POINT="/nom/point_montage"
SUB_DIRECTORY="sous_repertoire"

FICHIER_LOG="/var/log/surveillance_montage.log"

# Adresse email pour les alertes
EMAIL_DEST=""

# Durée de la pause entre chaque vérification de la disponibilité du point de montage (en secondes)
PAUSE_DURATION=60

# Taille maximale du fichier de log (en Mo)
MAX_NB_LIGNES_LOG=100

# Paramètres du script
PING_DEST=$(echo "$MOUNT_POINT" | cut -d '/' -f 3)
EMAIL_SUBJECT="Alerte : Point de montage réseau indisponible"

# Vérification de la disponibilité du point de montage
while true; do
    MOUNT_OUTPUT=$(mount | grep "$MOUNT_POINT")

    PING_RESULT=$(ping -c 1 "$PING_DEST" 2>&1)
    if ! [[ "$PING_RESULT" == *"0% packet loss"* ]]; then
        MESSAGE="KO - La machine $PING_DEST n'est pas joignable."
        ERREUR=1
       
    elif [ -z "$MOUNT_OUTPUT" ]; then
        MESSAGE="KO - Le répertoire de destination $MOUNT_POINT n'est pas monté."
        ERREUR=1
   
    elif [ ! -d "$MOUNT_POINT/$SUB_DIRECTORY" ]; then
        MESSAGE="KO - Le sous-répertoire $SUB_DIRECTORY du point de montage $MOUNT_POINT n'est pas disponible."
        ERREUR=1

    else
        MESSAGE="OK - La machine $PING_DEST, le montage $MOUNT_POINT et le sous-répertoire /$SUB_DIRECTORY sont disponibles"
        ERREUR=0
    fi

    echo "$MESSAGE"
   
    # Ecrit dans le fichier de log
    if [ -n "$FICHIER_LOG" ]; then
        echo "$(date "+%Y-%m-%d %H:%M:%S") $MESSAGE" >> "$FICHIER_LOG"
    fi

    # Envoie un email si erreur
    if [[ -n "$EMAIL_DEST" && $ERREUR -eq 1 ]]; then
        echo -e "Subject: $EMAIL_SUBJECT\nContent-Type: text/plain; charset=utf-8\n\n$MESSAGE" | /usr/sbin/sendmail -t "$EMAIL_DEST"
        tail -n $MAX_NB_LIGNES_LOG "$FICHIER_LOG" > "$FICHIER_LOG.tmp" && mv "$FICHIER_LOG.tmp" "$FICHIER_LOG"
    fi

    sleep "$PAUSE_DURATION"
done
Dernière modification le 26/04/2023 - Quillevere.net

Commentaires

Aucune inscription n'est requise si vous souhaitez

Rechercher sur le site

fr en rss RSS info Informations