Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
733 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [PERL] Supervisation d'un onduleur et alerte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PERL] Supervisation d'un onduleur et alerte

n°1679929
quaresma
Posté le 31-01-2008 à 16:44:10  profilanswer
 

salut à tous,
j'ai un petit problème.  
Dans le cadre de mon projet de fin d'année, je dois ajouter au logiciel de monitoring NAGIOS, un plugin qui va recuperer la temperature interne d'un onduleur.
Pour cela je me sert du protocole SNMP et de la MIB de l'onduleur.
Une fois le T° récupérée, je dois faire en sorte que si la T° est trop élevée, NAGIOS nous informe par SMS et/ou email de la situation.
 
Pour le moment, j'ai réalisé un script qui récupère bien la T° voulue :
 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use Net::SNMP;
  4. my ($session, $error) = Net::SNMP->session(
  5.       -hostname  => shift || '192.168.254.250', \\adresse IP de l'onduleur\\
  6.       -community => shift || 'public',
  7.       -port      => shift || 161
  8.                                               );
  9. if (!defined($session)) {
  10.     printf("ERROR: %s.\n", $error);
  11.     exit 1;
  12. }
  13. \\MIB de la T° interne de l'onduleur\\
  14. my $temperature = '1.3.6.1.4.1.705.1.5.7.0';
  15. my $result = $session->get_request(-varbindlist => [$temperature]);
  16. if (!defined($result)) {
  17.     printf("ERROR: %s.\n", $session->error);
  18.     $session->close;
  19.     exit 1;
  20. }
  21. printf("la Temperature dans la salle machine est de %s degres\n",
  22.   $result->{$temperature});
  23. $session->close;
  24. exit 0;


 
La T° interne doit être de 20° maxi.
Cependant, je ne sais pas comment faire pour comparer la T° et voir si elle est supérieur à 20°. Et ensuite, si elle est >20° être alerté...
 
Pourriez-vous m'aider ?
merci bcp pour vos réponses ;)

mood
Publicité
Posté le 31-01-2008 à 16:44:10  profilanswer
 

n°1679940
anapajari
s/travail/glanding on hfr/gs;
Posté le 31-01-2008 à 16:53:09  profilanswer
 

lire la doc?
( en même temps if c'est quand même la base :/ )


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1679968
quaresma
Posté le 31-01-2008 à 17:16:24  profilanswer
 

OK je connais très bien les if.
Mais pour Nagios, est-ce que je dois créer deux scripts différents ou faire le test de la T° dans celui-ci ?

n°1680063
couak
Posté le 31-01-2008 à 19:58:33  profilanswer
 

dans nagios tu dois renvoyer un code retour suivant les états suivants :
 'OK'      => 0,
 'WARNING' => 1,
 'CRITICAL'=> 2,
 'UNKNOWN' => 3

n°1680103
quaresma
Posté le 31-01-2008 à 21:23:52  profilanswer
 

'lut couak,
merci pour ta réponse.
En effet, je crois que j'ai du mal a comprendre comment fonctionne Nagios en fait.
C'est ces "états" que je ne comprend pas vraiment et comment les interpreter...et les imcorporer dans le script.
 
 :sarcastic:

n°1680110
couak
Posté le 31-01-2008 à 21:47:19  profilanswer
 

c'est toi qui définit les interprétation de ces états, nagios ne fait que récupérer le code retour
en perl, pour le code retour c'est comme en shell :

Code :
  1. exit X;


avec X le numéro du code retour


Message édité par couak le 31-01-2008 à 21:47:31
n°1680125
quaresma
Posté le 31-01-2008 à 22:46:17  profilanswer
 

OK j'esayerai cela au taff demain.
merci bien en tout cas.
bonne soirée

n°1681999
quaresma
Posté le 05-02-2008 à 14:46:30  profilanswer
 

salut,
voici mon plug, je pense qu'il fonctionne puisqu'il me retourne T° correcte
 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use Net::SNMP;
  4. my ($session, $error) = Net::SNMP->session(
  5.       -hostname  => shift || '192.168.254.250',
  6.       -community => shift || 'public',
  7.       -port      => shift || 161
  8.                                            );
  9. my %ERRORS=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2,'UNKNOWN'=>3,'DEPENDENT'=>4);
  10. if (!defined($session)) {
  11.     printf("ERROR: %s.\n", $error);
  12.     exit 1;
  13. }
  14. my $temperature = '1.3.6.1.4.1.705.1.5.7.0';
  15. my $result = $session->get_request(-varbindlist => [$temperature]);
  16. if (!defined($result)) {
  17.     printf("ERROR: %s.\n", $session->error);
  18.     $session->close;
  19.     exit 1;
  20. }
  21. if( ($result->{$temperature} > 18 ) or ($result->{$temperature} < 25 ) ){
  22.     printf("temperature correcte" );
  23.     exit $ERRORS{'OK'};
  24.     $session->close;
  25. }else{
  26.     if( ($result->{$temperature} > 25 ) or ($result->{$temperature} < 28 ) ){
  27.         printf("Attention seuil de temperature limite" );
  28. exit $ERRORS{'WARNING'};
  29.         $session->close;
  30.     }else{
  31.         if( $result->{$temperature} >28 ){
  32.             printf("seuil de temperature critique atteint" );
  33.     exit $ERRORS{'CRITICAL'};
  34.             $session->close;
  35. }       } }

n°1683108
matafan
Posté le 07-02-2008 à 09:19:51  profilanswer
 

Si la température est de 18, 25 ou 28 degrés exactement, tu fais quoi ?

n°1683132
couak
Posté le 07-02-2008 à 10:05:13  profilanswer
 

et si la température est inférieur à 18 ?
 
en perl tu as le mot-clé "elsif", ca aide pour éviter de faire des boucles immondes

mood
Publicité
Posté le 07-02-2008 à 10:05:13  profilanswer
 

n°1683176
matafan
Posté le 07-02-2008 à 11:30:51  profilanswer
 

Ah et aussi je crois que tu veux dire "and", pas "or". La température est correcte si elle est supérieure à 18 ET inférieure à 25. Tu est au seuil si elle et supérieure à 25 ET inférieure à 28.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [PERL] Supervisation d'un onduleur et alerte

 

Sujets relatifs
[PERL] besoin de votre aide pour comprendre une variable[Resolu] Equivalent de la commande unpack de PHP/Perl en Java
[PERL] de l'aide pour petite manip de champs dans un fichierQue pensez vous de mon script perl ??
[PERL] Perl et onduleursFenetre dialog en perl
[Resolu] [Problème] [Perl,Tableaux] lire un fichier texte[Sql,Sybase,perl]Requête Sql sybase pour script perl
[Perl] Problème de syntaxeTraduction perl en python
Plus de sujets relatifs à : [PERL] Supervisation d'un onduleur et alerte


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR