#!/bin/bash
# Liste des conteneurs Docker à surveiller
CONTENEURS=(« conteneur-1 » « conteneur-2 »)# Compteur de conteneurs en cours d’exécution
NB_CONTENEURS_ACTIFS=0# Vérification de l’état de chaque conteneur
for conteneur in « ${CONTENEURS[@]} »; do
if docker ps –format ‘{{.Names}}’ | grep -q « ^${conteneur}$ »; then
((NB_CONTENEURS_ACTIFS++))
fi
done# Analyse du résultat pour Centreon
if [[ $NB_CONTENEURS_ACTIFS -eq ${#CONTENEURS[@]} ]]; then
echo « OK – Tous les conteneurs sont en cours d’exécution. »
exit 0
elif [[ $NB_CONTENEURS_ACTIFS -gt 0 ]]; then
echo « WARNING – Seulement $NB_CONTENEURS_ACTIFS/${#CONTENEURS[@]} conteneur(s) en cours d’exécution. »
exit 1
else
echo « CRITICAL – Aucun des conteneurs n’est en cours d’exécution ! »
exit 2
fi
Auteur/autrice : starmate
Pour un seul processus python:
#!/bin/bash
# Nombre de processus Python
NOMBRE_PROCESSUS=$(pgrep -fc python)# Vérification : un seul processus attendu
if [ « $NOMBRE_PROCESSUS » -eq 1 ]; then
echo « OK – 1 seul processus Python actif »
exit 0
else
echo « CRITICAL – $NOMBRE_PROCESSUS processus Python actifs (1 attendu) »
exit 2
fi
| Nombre de processus Python | État | Code |
|---|---|---|
| 1 | OK | 0 |
| 0 ou > 1 | CRITICAL | 2 |
Pour plusieurs processus python (égal ou supérieur à 2):
#!/bin/bash
# Compte le nombre de processus « python »
nb_processus=$(pgrep -fc python)if [ « $nb_processus » -le 1 ]; then
echo « CRITICAL – Seulement $nb_processus processus Python actifs »
exit 2
else
echo « OK – $nb_processus processus Python actifs »
exit 0
fi
| Nombre de processus Python | État | Code |
|---|---|---|
| 0 ou 1 | CRITICAL | 2 |
| ≥ 2 | OK | 0 |
Points à surveiller:
Si tu as python3 + un module Python cela te fera au moins 2 processus et si le script Python lance des sous-processus tu auras surement des faux positifs possibles
Cette sonde Bash sert à surveiller le nombre de fichiers .dat présents dans un répertoire donné:
#!/bin/bash
# Définition des seuils
SEUIL_AVERTISSEMENT=5
SEUIL_CRITIQUE=8# Définition du répertoire à surveiller
REPERTOIRE= »/home/data/D_IMPORT »# Vérification de l’existence du répertoire
if [ ! -d « $REPERTOIRE » ]; then
echo « CRITICAL: Répertoire $REPERTOIRE introuvable »
exit 2
fi# Comptage des fichiers .dat
NOMBRE_FICHIERS=$(find « $REPERTOIRE » -maxdepth 1 -type f -name « *.dat » | wc -l)# Vérification des seuils
if [ « $NOMBRE_FICHIERS » -gt « $SEUIL_CRITIQUE » ]; then
echo « CRITICAL: $NOMBRE_FICHIERS fichiers .dat trouvés dans $REPERTOIRE »
exit 2
elif [ « $NOMBRE_FICHIERS » -gt « $SEUIL_AVERTISSEMENT » ]; then
echo « WARNING: $NOMBRE_FICHIERS fichiers .dat trouvés dans $REPERTOIRE »
exit 1
else
echo « OK: $NOMBRE_FICHIERS fichiers .dat trouvés dans $REPERTOIRE »
exit 0
fi
Nombre de fichiers .dat |
État | Code |
|---|---|---|
| 0 à 5 | OK | 0 |
| 6 à 8 | WARNING | 1 |
| > 8 | CRITICAL | 2 |
Et en inversant la logique des seuils:
#!/bin/bash
# Définition des seuils
SEUIL_CRITIQUE=5
SEUIL_AVERTISSEMENT=8# Définition du répertoire à surveiller
REPERTOIRE= »/home/data/D_IMPORT »# Vérification de l’existence du répertoire
if [ ! -d « $REPERTOIRE » ]; then
echo « CRITICAL: Répertoire $REPERTOIRE introuvable »
exit 2
fi# Comptage des fichiers .dat
NOMBRE_FICHIERS=$(find « $REPERTOIRE » -maxdepth 1 -type f -name « *.dat » | wc -l)# Vérification des seuils (logique inversée)
if [ « $NOMBRE_FICHIERS » -le « $SEUIL_CRITIQUE » ]; then
echo « CRITICAL: $NOMBRE_FICHIERS fichiers .dat trouvés dans $REPERTOIRE »
exit 2
elif [ « $NOMBRE_FICHIERS » -le « $SEUIL_AVERTISSEMENT » ]; then
echo « WARNING: $NOMBRE_FICHIERS fichiers .dat trouvés dans $REPERTOIRE »
exit 1
else
echo « OK: $NOMBRE_FICHIERS fichiers .dat trouvés dans $REPERTOIRE »
exit 0
fi
Nombre de fichiers .dat |
État | Code |
|---|---|---|
| 0 à 5 | CRITICAL | 2 |
| 6 à 8 | WARNING | 1 |
| > 8 | OK | 0 |
Voici une sonde pour afficher la version d’un paquet installé (ici sentinelone) qui affichera un etat OK en permanence:
#!/bin/bash
# Commande pour récupérer la version de SentinelOne
SENTINELONE_VERSION=$(dpkg -l | grep sentinel | awk ‘{print $3}’)# Vérification si la commande a bien retourné une version
if [[ -z « $SENTINELONE_VERSION » ]]; then
echo « Impossible de récupérer la version de SentinelOne »
else
echo « SentinelOne version $SENTINELONE_VERSION »
fi# Retour toujours en OK
exit 0
Voici une sonde Centreon qui permet de vérifier la présence (et l’exécution) de plusieurs processus python:
#!/bin/bash
# Liste des processus à surveiller
processes=(« processus1.py » « processus2.py » « processus3.py » « processus4.py » « processus5.py » « processus6.py » « processus7.py »)
running_count=0
total_processes=${#processes[@]}
missing_processes=() # Liste des processus manquants# Vérification de chaque processus
for process in « ${processes[@]} »; do
if pgrep -f « $process » > /dev/null; then
((running_count++))
else
missing_processes+=(« $process »)
fi
done# Générer l’état final
if [ $running_count -eq $total_processes ]; then
echo « OK: Tous les processus sont actifs | processes_running=$running_count;$total_processes;$total_ processes;0;$total_processes »
exit 0
else
missing_list=$(IFS=,; echo « ${missing_processes[*]} ») # Convertir la liste en une chaîne de texte
echo « CRITICAL: $running_count/$total_processes processus sont actifs. Manquant: $missing_list | processes_running=$running_ count;$total_processes;$total_ processes;0;$total_processes »
exit 2
fi