PDA

View Full Version : check_logs quotes required


vinchenzo
06-27-2006, 07:23 PM
Bonjour à tous,

Petite question:

Lorsque je fais une recherche d'un pattern avec check_logs, j'ai besoin d'utiliser les appostrophes afin de rechercher un string précis.

En ligne de commande, j'ai aucun problème.

./check_logs.pl -l /var/log/messages -s failure.seek -p 'server failure detected'

Lorsque j'applique la même syntaxe dans Oreon, aucun pattern est trouvé.

!/var/log/message!failure.seek!'server failure detected'

J'ai aussi essayé avec les guillements et en ligne de commande c'est fonctionnel et dans Oreon non.

J'ai aussi essayé d'intégrer les appostrophes dans la commande check comme suit:

$USER1$/check_logs.pl -l $ARG1$ -s $ARG2$ -p '$ARG3$'

Mais cela n'a pas fonctionné.

Savez-vous comment intégrer des appostrophes ou des guillements dans une variable $ARGx$.

Merci

DonKiShoot
06-27-2006, 07:27 PM
Se pencher peut-être du coté des "illegal characters"

Ensuite pourquoi pas protéger certain caractères, par exemple \'

Dernière idée, un bug oreon :D

vinchenzo
06-27-2006, 07:38 PM
Quest-ce que tu veux dire par protéger certains caractères?

DonKiShoot
06-27-2006, 08:13 PM
Pour empécher qu'il ne soient interpréter.

$toto = 'l'hélicoptère'
echo $toto : l

$toto = 'l\'hélicoptère'
echo $toto : l'hélicoptère

Un certain nombres de caractères sous certaines conditions nécéssitent d'être ce que j'apelle protégé.
Tout ce qui est du genre * + - ! $ \ ! etc ...

vinchenzo
06-27-2006, 09:31 PM
J'ai trouvé le problème.

Voici la syntaxe que j'ai utiliser dans mon check_logs:

!/var/log/messages!failure.seek!'server failure detected'

Après avoir généré et déplacé les fichiers CFG. Je fais un VI de mon fichier services.cfg. La commande apparait comme suit:

check_logs!/var/log/message!failure.seek!\'server failure detected\'

Comme nous pouvons voir ici, Oreon a généré le "check service" et a ajouter un backslash avant mes deux appostrophes.

Donc pour le moment, le service ne fonctionne pas. Alors je modifie manuellement le fichier services.cfg afin d'enlever les backslash et de laisser seulement mes deux appostrophes.

Je redémararre nagios et hop, le tout fonctionne.

Donc maintenant que j'ai trouvé mon problème alors maintenant je dois trouver une solution. Ce n'est pas intéressant pour moi de modifier à chaque fois le fichier service.cfg après chaque modification dans Oreon. Surtout que j'ai plusieurs services utilisant le check_logs. Donc, y a t'il un moyen que Oreon n'intègre pas de lui même les caractères backslash?

Merci

vinchenzo
06-27-2006, 11:12 PM
Pour le moment, j'ai réglé le problème en ajoutant ces trois lignes dans le script init de nagios. J'enlève tout les backslashs du fichier services.cfg.

/usr/bin/sed -e 's/\\//g' /usr/local/nagios/etc/services.cfg > /usr/local/nagios/etc/services.cfg.tmp
/bin/mv /usr/local/nagios/etc/services.cfg.tmp /usr/local/nagios/etc/services.cfg
/bin/chown wwwrun:nagios /usr/local/nagios/etc/services.cfg


Si quelqu'un a une autre facon plus propre de faire la chose. svp, faites moi parvenir vos propositions.

Merci

DonKiShoot
06-28-2006, 10:13 AM
Pour moi il s'agit d'un bug d'oreon.
A plusieurs endroits il gère assez mal ce type de caractères.
Notamment j'ai remonté un bug pour les noms, prénoms, pseudo, etc ....
qui coince dés qu'il y a un apostrophe.

Il faut qu'il jongle avec les addslash et les stripslash avant insertion en base et après récupération.

Tu peux ouvrir un bug ici je pense qu'il est justifié :

http://bugs.oreon-project.org/