Re: [SSFR] Script

[ Thread Index | Date Index | More debianworld.org/shellscript-fr Archives ]


Bonjour,

Il faudrait que tu stockes dans un fichier 1 (ou une BDD si tu préfères) les informations concernant les services en état CRITICAL (je pense qu'il faut le nom de la machine, le nom du service et la sortie du plugin de contrôle). A l'exécution suivante du script, tu récupères ces mêmes informations dans un fichier 2 et pour chaque entrée de fichier 2 tu regardes si l'entrée existe à l'identique dans fichier 1. Si ce n'est pas le cas c'est que l'alarme est nouvelle et tu joues ton son. Pour finir, tu remplace fichier 1 par fichier 2 de façon à avoir des information pertinentes à la boucle suivante. Le plus compliqué va être, avec ta méthode, de parser correctement la sortie HTML pour récupérer les infos.

Mais bon, ton problème est plus une question d'algorithmique que de programmation shell.

Par ailleurs, t'es tu demandé si aller récupérer les informations dans la page HTML était vraiment la meilleure solution ? Que se passe-t-il si après une mise à jour le code HTML généré est légèrement différent (même avec le même rendu dans un navigateur : il suffit de rajouter des sauts de ligne). N'as-tu pas un moyen de récupérer ces informations directement sur le serveur Nagios ? (suivant la version, c'est conservé soit dans des fichiers textes, soit dans une base de données mysql ou postgreSQL). Enfin, Nagios prévoit la possibilité d'envoyer des alarmes avec exactement le comportement que tu veux : jette un coup d'œil du côté de la directive "*stalking_options*" dans la définition d'un service. Évidemment, je ne sais pas bien comment jouer un son à distance, mais au pire tu peux prévoir un script d'alarme qui va positionner un "flag" (champ dans une BDD, présence d'un fichier quelque part, envoi d'un mail, ...) : un script sur ta machine pourrait alors se contenter de vérifier la présence de ce flag pour jouer la musique que tu veux (ne pas oublier de réinitialiser le flag).

Bon, tout ça c'était juste pour donner mon avis ;-)

Bon courage
JJD


debian user a écrit :

Bonjour,

Je viens de m'inscrire sur cette liste suite aux conseils que l'on m'à
donné sur la liste utilisateur debian.

Je supervise des machines avec nagios, et j'aimerai le faire parler sous
certaines condition.

J'ai réussi à le faire mais maintenant j'aimerai y mettre des conditions
pour qu'il ne parle que pour de nouvelles alerte qui sont différentes,
mais je ne vois pas comment réaliser cela.

Je ne suis qu'un novice en bash comme je le répete.

Voici un exemple qui marche :

#!/bin/bash
while true; rm -Rf fich.resultapp_pb; do clear; curl --user
nagios:nagios --silent
http://ipmachine/nagios/cgi-bin/status.cgi?hostgroup=all | egrep
"<TD CLASS='miniStatusCRITICAL" | egrep "%2DLBA" | egrep " CRITICAL" >
fich.result.lba_pb
if  [ -s fich.result.lba_pb ]; then
mplayer son/Probleme_alteon.wav >/dev/null
sleep 180;
fi
done

Le script va consulter la page, il regarde si une
ligne de tableau concernant un LBA (LoadBalancer) à un soucis de type
CRITICAL, et si c'est le cas lorsqu'il rencontre se problème il l'écrit
ceci dans un fichier.

Une fois que le fichier est rempli, il teste si le fichier est vide.

si oui pas de son joué, si non il joue le son.

C'est pas bien compliqué.

Maintenant il peut y avoir pour une meme machine ou équipement réseau
différent critical puisqu'il y'à plusieurs surveillances par machine :

Cpu / disque / pb dnas les log etc.....

Ce que je voudrais faire, ce serait de stocker dans un fichier les
alarmes déjà rencontrées et si elles ont déjà été rencontré que le son
ne soit pas joué.

par contre dès qu'un nouveau type de critical est rencontré qu'un son
soit joué.

Si quelqu'un pourrait m'aider.



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/