28/05/2020Voici 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 :
- 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 :
- 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