IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

Supervision d'un onduleur et alerte


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    546
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 546
    Par défaut Supervision d'un onduleur et alerte
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #!/usr/bin/perl
    
    use strict;
    
    use Net::SNMP;
    
    my ($session, $error) = Net::SNMP->session(
          -hostname  => shift || '192.168.254.250', *\\adresse IP de l'onduleur\\*
          -community => shift || 'public',
          -port      => shift || 161
                                                  );
    if (!defined($session)) {
        printf("ERROR: %s.\n", $error);
        exit 1;
    }
    
    *\\MIB de la T° interne de l'onduleur\\*
    my $temperature = '1.3.6.1.4.1.705.1.5.7.0'; 
    
    my $result = $session->get_request(-varbindlist => [$temperature]);
    
    if (!defined($result)) {
        printf("ERROR: %s.\n", $session->error);
        $session->close;
        exit 1;
    }
    printf("la Temperature dans la salle machine est de %s degres\n",
      $result->{$temperature});
    
    $session->close;
    
    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

  2. #2
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    Ton script est bien tourné. C'est plutôt surprenant que ce faisant tu hésites pour un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($result->{$temperature} > 20) {...}
    Perl force la conversion en présence de l'opérateur >. Mais peut être quelque chose m'échappe dans dans ta question.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    546
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 546
    Par défaut
    'lut iblis,
    merci pour ta réponse.
    En effet, je crois que j'ai du mal a comprendre comment fonctionne Nagios en fait.
    La comparaison avec les "if" je sais faire, mais le problème c'est que je ne sais pas comment integrer ce code pour que Nagios l'interprete et envoie une alerte par mail et/ou SMS si la T° est depassé.

    Faut-il réaliser un second plugin ?

  4. #4
    Membre chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Par défaut
    A supposer que tu aies un serveur mail installé (par exemple postfix):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    use Mail::Sendmail;
     
    if ($result->{$temperature} > 20) {
        my  %mail = (     from    => 'root@localhost',
                        to        => 'user@localhost',
                        subject    => 'Dépassement température',
                        message    => 'La température est de'.sprintf("%s", $result->{$temperature})." degré\n",
                     );
     
        sendmail(%mail) or warn $Mail::Sendmail::error;
    }

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    546
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 546
    Par défaut
    Salut iblis,
    ok merci pour ta réponse, je vais tester cela et te tiens au courant.

    bonne journée

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/08/2010, 15h27
  2. Réponses: 2
    Dernier message: 26/03/2010, 10h52
  3. [VB.Net] Probleme avec dialogues (confirm et alert)
    Par crackity_jones666 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 26/11/2003, 22h05
  4. [web] alert comme en javascript
    Par Shabata dans le forum Web
    Réponses: 3
    Dernier message: 06/11/2003, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo