Catégorie : Script

16 décembre 2025 /

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

16 décembre 2025 /

Voici le script d’une sonde pour vérifier qu’un service est bien actif.

Exemple pour Nginx:

#!/bin/bash

a=`systemctl is-active nginx`

if [ « $a » != « active » ] ; then

echo « KO ==> service nginx DOWN »
exit 2
else
echo « OK ==> service nginx UP »
exit 0
fi

Exemple pour Postgres:

#!/bin/bash

b=`systemctl is-active postgresql.service`

if [ « $b » != « active » ] ; then

echo « KO ==> service postgresql DOWN »
exit 2
else
echo « OK ==> service postgresql UP »
exit 0
fi

Exemple pour en mettant le nom du service en argument du script ($1):

#!/bin/bash

systemctl list-units|grep -i $1 > /dev/null

if [ $? -ne 0 ]
then
echo « KO ==> service $1 introuvable »
exit 2
fi

state=`systemctl is-active $1`

if [ « $state » != « active » ]  ; then

echo « KO ==> service $1 DOWN »
exit 2
else
echo « OK ==> service $1 UP »
exit 0
fi

16 décembre 2025 /

Script pour relancer les services centengine et gorgoned de Centreon (via crontab toutes les x minutes):

#!/bin/bash

# Services à surveiller
SERVICES=(« centengine » « gorgoned »)

# Fichier de log
LOG_FILE= »/var/log/check_services_centreon.log »

# Dossier et fichiers de compteurs
COUNT_DIR= »/var/log/centreon_check_counts »
mkdir -p « $COUNT_DIR »

# Date pour le log
DATE=$(date « +%Y-%m-%d %H:%M:%S »)

for SERVICE in « ${SERVICES[@]} »; do
systemctl is-active –quiet « $SERVICE »
STATUS=$?

if [ $STATUS -ne 0 ]; then
# Incrémentation du compteur
COUNT_FILE= »$COUNT_DIR/${SERVICE}_restarts.count »
if [ ! -f « $COUNT_FILE » ]; then
echo 0 > « $COUNT_FILE »
fi
COUNT=$(cat « $COUNT_FILE »)
COUNT=$((COUNT + 1))
echo « $COUNT » > « $COUNT_FILE »

# Redémarrage du service
systemctl restart « $SERVICE »

echo « $DATE – $SERVICE inactif -> redémarré (compteur = $COUNT) » >> « $LOG_FILE »
else
echo « $DATE – $SERVICE actif » >> « $LOG_FILE »
fi
done

7 mars 2018 /

Suite à la dernière mise à jour du client bittorrent Transmission (v2.93), impossible de le démarrer. Au bout d’une minute, le service tombe KO:

Mar 7 20:24:12 XXXX systemd[1]: transmission-daemon.service: Start operation timed out. Terminating.
Mar 7 20:24:13 XXXX transmission-daemon[1200]: Closing transmission session... done.
Mar 7 20:24:13 XXXX systemd[1]: transmission-daemon.service: Unit entered failed state.
Mar 7 20:24:13 XXXX systemd[1]: transmission-daemon.service: Failed with result 'timeout'.

On peut contourner le problème et démarrer transmission de cette façon:

sudo su -
vi /etc/systemd/system/multi-user.target.wants/transmission-daemon.service

On va modifier le type de service via le paramètre « type » :

[Unit]
Description=Transmission BitTorrent Daemon
After=network.target

[Service]
User=transmission
Type=notification
ExecStart=/usr/bin/transmission-daemon -f --log-error
ExecReload=/bin/kill -s HUP $MAINPID


[Install]
WantedBy=multi-user.target

Qui devient:

[Unit]
Description=Transmission BitTorrent Daemon
After=network.target

[Service]
User=transmission
Type=simple
ExecStart=/usr/bin/transmission-daemon -f --log-error
ExecReload=/bin/kill -s HUP $MAINPID


[Install]
WantedBy=multi-user.target

On fait prendre en compte la modification par Systemd:

systemctl daemon-reload

On redemarre le service:

systemctl stop transmission-daemon
systemctl start transmission-daemon

Et là, ça fonctionne!

17 août 2017 /

Installation

sudo yum update -y
sudo yum install httpd -y
sudo yum install perl perl-CGI -y
sudo systemctl start httpd.service
sudo systemctl enable httpd.service

Création d’un fichier de test CGI

Pour cela on va créer un répertoire de test:

mkdir /var/www/test_cgi
vi /var/www/test_cgi/hello.cgi

Et on y ajoute cela:

#!/usr/bin/perl
print "Content-type: text/html\n\n"; # Obligatoire
print "<h2>Hello world!</h2>";

Chargement du module mod_cgi.so dans Apache

On peux vérifier les modules présent dans la configuration principale d’Apache:

grep -n "LoadModule" /etc/httpd/conf/httpd.conf

Si il n’est pas présent, on va l’ajouter, pour cela on va localiser le module:

find /etc/httpd/modules/ -iname "*cgi*"

Cela devrait nous retourner:

/etc/httpd/modules/mod_cgi.so

Une fois trouvé, on ajoute cette ligne au fichier de configuration d’apache:

LoadModule cgi_module modules/mod_cgi.so

Particularité sur Ubuntu pour activer le module cgi:

sudo a2enmod cgi
sudo service apache2 restart

Déclaration du répertoire du script test dans httpd.conf

vi /etc/httpd/conf/httpd.conf

Puis on y ajoute ça:

<Directory "var/www/test_cgi">
Options +ExecCGI
AddHandler cgi-script .cgi .pl
</Directory>

On modifie également cette ligne comme ceci:

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

qui devient:

#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
ScriptAlias /test_cgi/ "/var/www/test_cgi/"

Attribution des droits

chmod 755 hello.cgi

On redémarre Apache:

sudo systemctl restart httpd.service

On peux maintenant tester le script à cette adresse:

http://@IP/hello.cgi