Forum debian-fr.org

Rechercher:

* Connexion   * M’enregistrer

* FAQ    * Rechercher





Poster un nouveau sujet Répondre au sujet  [ 13 messages ] 
Auteur Message
MessagePosté: 15 Mai 2012 13:38 
Hors ligne
Dieu du clavier.
Avatar de l’utilisateur

Inscription: 13 Mar 2009 07:30
Messages: 12693
Localisation: Madagascar - Isalo
Salut,
Je suis en train de bricoler un script (à partir d'un script emprunté à NixCraft) qui est censé vérifier si mes services tournent et m'envoyer un message sur mon ejabberd en cas d'echec.
Voici ou j'en suis:
Code:
chk_services(){
# Quels ports sont à l'écoute ?
RPORTS=$($NETSTAT -tulpn | grep -vE '^Active|Proto' | grep 'LISTEN' | awk '{ print $4}' | awk -F: '{print $NF}' | sed '/^$/d' | sort -u)

        for t in $ports
        do
                sname=$(echo $service | cut -d' ' -f$c)
                echo -en " $sname\t\t\t : "
                echo -en " $sname\t\t\t : " >> $LOG
                for r in $RPORTS
                do
                        if [ "$r" == "$t" ]
                        then
                                status="YES"
                                sendjabb=1
                                break
                        fi
                done
                echo -n "$status"
                echo ""
                echo -n "$status" >>$LOG
                echo "" >>$LOG
                [ $logtosyslog -eq 1  ] && $LOGGER "$sname service running : $status"
 
                # MAJ compteur
                c=$( expr $c + 1 )
                status="NO"
        done
 
        if [ $sendjabb -eq 1 ];
        then
                sendxmpp -m $LOG $JABBID
 
fi
}


Mon problème est que le script envoie systématiquement un message, même si tous les service fonctionnent...
J'aimerais ne recevoir une alerte que lorsqu'un service tombe...

Voici ce que m'envoie le script sur mon pidgin...
Citation:
(15:31:53) toto@monserveur.tld: -------------------------------------------------------------
Running services status @ admin@monserveur.tld [ mardi 15 mai 2012, 14:32:19 (UTC+0200) ]
-------------------------------------------------------------
SSH : YES
DNS : YES
WEB : YES
MAIL : YES
-------------------------------------------------------------
This is an automatically generated Linux service status notification by /usr/local/bin/watchservices.sh script.


Si vous aviez une idée, j'en serais ravi!
Merci.

_________________
GO Compréhensif...
SID 3.x-etc...-amd64 && Xfce 4.x
Je fais des sites maintenant! / Service d'hébergement d'images
Visitez et Participez au wiki du forum!


Haut
 Profil  
 
MessagePosté: 15 Mai 2012 14:02 
Hors ligne
Contributeur
Avatar de l’utilisateur

Inscription: 18 Juil 2007 16:57
Messages: 8602
Code:
if [ "$r" == "$t" ]
then
    status="YES"
    sendjabb=1
    break
fi

Quand le status est à YES sendjabb est à 1.

Code:
if [ $sendjabb -eq 1 ];
then
    sendxmpp -m $LOG $JABBID
fi

Quand sendjabb est à 1 tu envoie le message.

Code:
Running services status @ admin@monserveur.tld [ mardi 15 mai 2012, 14:32:19 (UTC+0200) ]
-------------------------------------------------------------
SSH : YES
DNS : YES
WEB : YES
MAIL : YES
-------------------------------------------------------------
This is an automatically generated Linux service status notification by /usr/local/bin/watchservices.sh script.

Les status à YES te sont envoyé.

Je vois pas où est le problème entre ton code et ton résultat. Mais je présume que tu voudrait remplacer :
Code:
if [ $sendjabb -eq 1 ];

par
Code:
if [ $sendjabb -ne 1 ];


(il manquera toujours une initialisation de sendjabb au début)

_________________
Je suis Pitta, cartésien, irritable, irritant et névrosé (de plus je fais de l'entrisme pour zsh), si l'un de mes messages vous insupporte essayez d'y voir de l'ironie ou de ne pas en tenir compte. Bonne journée et gardez le sourire. :)


Haut
 Profil  
 
MessagePosté: 15 Mai 2012 14:20 
Hors ligne
Vraiment, particulièrement bavard(e)!
Avatar de l’utilisateur

Inscription: 12 Nov 2008 13:54
Messages: 3378
Localisation: Lille
@MisterFreez : Tu va penser que je te casse les pieds ( :mrgreen: ), mais ce script est typiquement le genre de chose que l'on peut faire avec perl?


Haut
 Profil  
 
MessagePosté: 15 Mai 2012 14:27 
Hors ligne
Dieu du clavier.
Avatar de l’utilisateur

Inscription: 13 Mar 2009 07:30
Messages: 12693
Localisation: Madagascar - Isalo
Salut,
Merci. MisterFreeze est toujours présent quand il y a du script dans l'air... :038
MisterFreez a écrit:
Quand le status est à YES sendjabb est à 1.
Quand sendjabb est à 1 tu envoie le message.

Ça j'avais bien percuté. Le truc c'est qu'il y a une boucle, donc plusieurs status.

MisterFreez a écrit:
Mais je présume que tu voudrait remplacer :
Code:
if [ $sendjabb -eq 1 ];

par
Code:
if [ $sendjabb -ne 1 ];


Ça ne change rien. Service OK ou pas, pas de message envoyé.
La variable $sendjabb reste à 1 même si un service tombe.

MisterFreez a écrit:
(il manquera toujours une initialisation de sendjabb au début)

Ça j'ai pas compris.

_________________
GO Compréhensif...
SID 3.x-etc...-amd64 && Xfce 4.x
Je fais des sites maintenant! / Service d'hébergement d'images
Visitez et Participez au wiki du forum!


Haut
 Profil  
 
MessagePosté: 15 Mai 2012 15:29 
Hors ligne
Dieu du clavier.
Avatar de l’utilisateur

Inscription: 13 Mar 2009 07:30
Messages: 12693
Localisation: Madagascar - Isalo
Re,

j'ai trouvé une solution. Je ne sais pas ce que ça vaut, mais ça fonctionne...

Code:
grep "NO" $LOG && sendxmpp -m $LOG $JABBID

_________________
GO Compréhensif...
SID 3.x-etc...-amd64 && Xfce 4.x
Je fais des sites maintenant! / Service d'hébergement d'images
Visitez et Participez au wiki du forum!


Haut
 Profil  
 
MessagePosté: 15 Mai 2012 15:39 
Hors ligne
Contributeur
Avatar de l’utilisateur

Inscription: 18 Juil 2007 16:57
Messages: 8602
lol a écrit:
Re,

j'ai trouvé une solution. Je ne sais pas ce que ça vaut, mais ça fonctionne...

Code:
grep "NO" $LOG && sendxmpp -m $LOG $JABBID

Si tu veux il n'y a aucun lien entre le premier code et ça :smile:

Le problème c'est que tu n'initialisais jamais sendjabb.

@M3t4linux > C'est assez proches dans l'idée des sondes nagios et un grand nombre d'entre elles sont faites en perl (les sondes nagios étant utilisées par un paquet de serveur de supervision). Pour en avoir discuté avec des personnes qui y touchent un peu plus. Pour ce genre de sondes, perl est utilisé par défaut, ensuite c'est du C si on a besoin de performance et du shell quand c'est vraiment plus simple/pratique en shell.

_________________
Je suis Pitta, cartésien, irritable, irritant et névrosé (de plus je fais de l'entrisme pour zsh), si l'un de mes messages vous insupporte essayez d'y voir de l'ironie ou de ne pas en tenir compte. Bonne journée et gardez le sourire. :)


Haut
 Profil  
 
MessagePosté: 15 Mai 2012 15:43 
Hors ligne
Dieu du clavier.
Avatar de l’utilisateur

Inscription: 13 Mar 2009 07:30
Messages: 12693
Localisation: Madagascar - Isalo
Citation:
Le problème c'est que tu n'initialisais jamais sendjabb.

Il te manquais des infos, j'avais tronqué le début du script qui contient ça:
Citation:
#Counters, set defaults
c=1
status=""
sendjabb=0


Donc, je ne comprend pas trop ce qui déconnait.

Pas grave, ça fonctionne avec ma petite solution... :023
Quand un service tombe, j'ai un message sur mon compte jabber.
Citation:
(17:35:27) admin@domaine.tld: -------------------------------------------------------------
Running services status @ serveur.domaine.tld [ mardi 15 mai 2012, 16:35:53 (UTC+0200) ]
-------------------------------------------------------------
Mysql : YES
Monit : NO
Ftp : YES
SSH : YES
Imap : YES
Web : YES
Dns : YES
Mail : YES
-------------------------------------------------------------

_________________
GO Compréhensif...
SID 3.x-etc...-amd64 && Xfce 4.x
Je fais des sites maintenant! / Service d'hébergement d'images
Visitez et Participez au wiki du forum!


Haut
 Profil  
 
MessagePosté: 15 Mai 2012 18:24 
Hors ligne
Contributeur
Avatar de l’utilisateur

Inscription: 18 Juil 2007 16:57
Messages: 8602
lol a écrit:
Citation:
Le problème c'est que tu n'initialisais jamais sendjabb.

Il te manquais des infos, j'avais tronqué le début du script qui contient ça:
Citation:
#Counters, set defaults
c=1
status=""
sendjabb=0

Histoire que tu comprenne. Si tu veux qu'il soit initialisé à 0 à chaque itération de la boucle, le mieux c'est de l'initialiser à 0 à chaque itération de la boucle ;)

_________________
Je suis Pitta, cartésien, irritable, irritant et névrosé (de plus je fais de l'entrisme pour zsh), si l'un de mes messages vous insupporte essayez d'y voir de l'ironie ou de ne pas en tenir compte. Bonne journée et gardez le sourire. :)


Haut
 Profil  
 
MessagePosté: 15 Mai 2012 18:29 
Hors ligne
Dieu du clavier.
Avatar de l’utilisateur

Inscription: 13 Mar 2009 07:30
Messages: 12693
Localisation: Madagascar - Isalo
MisterFreez a écrit:
Histoire que tu comprenne. Si tu veux qu'il soit initialisé à 0 à chaque itération de la boucle, le mieux c'est de l'initialiser à 0 à chaque itération de la boucle ;)


Ce n'est pas le cas avec le bout de code que je donne en plus ?

_________________
GO Compréhensif...
SID 3.x-etc...-amd64 && Xfce 4.x
Je fais des sites maintenant! / Service d'hébergement d'images
Visitez et Participez au wiki du forum!


Haut
 Profil  
 
MessagePosté: 15 Mai 2012 22:46 
Hors ligne
Contributeur
Avatar de l’utilisateur

Inscription: 18 Juil 2007 16:57
Messages: 8602
Ça dépend de ce que tu appel « le début du script » (j'ai jamais était bon en puzzle).

_________________
Je suis Pitta, cartésien, irritable, irritant et névrosé (de plus je fais de l'entrisme pour zsh), si l'un de mes messages vous insupporte essayez d'y voir de l'ironie ou de ne pas en tenir compte. Bonne journée et gardez le sourire. :)


Haut
 Profil  
 
MessagePosté: 16 Mai 2012 06:47 
Hors ligne
Dieu du clavier.
Avatar de l’utilisateur

Inscription: 13 Mar 2009 07:30
Messages: 12693
Localisation: Madagascar - Isalo
Salut,
MisterFreez a écrit:
Histoire que tu comprenne. Si tu veux qu'il soit initialisé à 0 à chaque itération de la boucle, le mieux c'est de l'initialiser à 0 à chaque itération de la boucle ;)


J'ai finalement du mal à te comprendre.
Si je l'initialise à chaque itération, je vais recevoir une alerte pour chaque service défaillant (si on imagine que tous mes services sont à la ramasse, je vais recevoir autant d'alertes que de services).

_________________
GO Compréhensif...
SID 3.x-etc...-amd64 && Xfce 4.x
Je fais des sites maintenant! / Service d'hébergement d'images
Visitez et Participez au wiki du forum!


Haut
 Profil  
 
MessagePosté: 16 Mai 2012 07:55 
Hors ligne
Contributeur
Avatar de l’utilisateur

Inscription: 18 Juil 2007 16:57
Messages: 8602
Tu as raison on s'est mal compris, je n'avais pas fait gaffe que l'envoie est hors de la boucle.

_________________
Je suis Pitta, cartésien, irritable, irritant et névrosé (de plus je fais de l'entrisme pour zsh), si l'un de mes messages vous insupporte essayez d'y voir de l'ironie ou de ne pas en tenir compte. Bonne journée et gardez le sourire. :)


Haut
 Profil  
 
MessagePosté: 16 Mai 2012 08:04 
Hors ligne
Dieu du clavier.
Avatar de l’utilisateur

Inscription: 13 Mar 2009 07:30
Messages: 12693
Localisation: Madagascar - Isalo
Salut,
Merci, ça me rassure. Mon grep sur le log, même s'il n'est pas joli, fait sont travail; C'est le principal.
Vu comment c'est foutu, je ne voyais pas comment mettre l'action dans la boucle de toute façon...

_________________
GO Compréhensif...
SID 3.x-etc...-amd64 && Xfce 4.x
Je fais des sites maintenant! / Service d'hébergement d'images
Visitez et Participez au wiki du forum!


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 13 messages ] 

Index du forum » Divers » Programmation


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Aller à:  
Flux RSS Flux RSS Liste des flux Liste des flux
Powered by phpBB® Forum Software © phpBB Group
Traduction par: phpBB-fr.com
SEO
[ Time : 0.124s | 14 Queries | GZIP : Off ]