Announcement

Collapse
No announcement yet.

Modification du script sensors

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Modification du script sensors

    Bonjour,

    J'étais intéressé pas l'utilisation du script sensors s'appuyant sur le paquet lm-sensors.

    Après l'avoir mis en place, je me suis aperçu que lors d'une remontée d'alarme, on disposait seulement de cette information dans Oreon : SENSOR CRITICAL - Sensor alarm detected!

    ou quand tout va bien :

    sensors ok

    Et moi mon problème est que j'aurais toujours SENSOR CRITICAL parce qu'il détecte toujours mon boitier ouvert !

    De ce fait j'ai voulu modifier le script de façon à remonter les mêmes informations que si on tape en ligne de commandes : sensors qui nous affiche sur plusieurs lignes le voltage, la température du boîtiers et processeur (...)

    Mais mon problème est qu'en mettant : echo $SENSORDATA qui correspond à la commandes sensors 2>&1

    et ben on obtient bien toutes les infos dans oreon mais sur une ligne donc c'est illisible.

    Je pensais que cela venait de la commande echo donc j'ai fais un petit prog en C de façon à rediriger la sortie de la commande sensors vers un fichier (sensors >tmp) puis je me suis dit qu'en fait un echo ligne par ligne du fichier j'aurais mes infos correctement !!!!

    Mais non :roll: c'est pour ça que je suis là sinon j'aurais poster le script modifé sur le forum.

    Pour pas vous embrouiller plus longtemps ma question est que dois je faire pour obtenir toutes mes infos sur des lignes différentes ???

    Existe t'il un code en shell pour revenir à la ligne un peu comme le "\n" en C

    Merci a+
    Nagios : 2.5
    Oreon : 1.3.3
    Mysql : 4.1

  • #2
    echo "$lign1
    $ligne2
    $ligne3" ca donnerai quoi dans Oreon ?
    Intel(R) Xeon(TM) CPU 3.4GHz - MemTotal : 1034476 kB
    Centreon 2.4.1 - Nagios 3.2.1 - Nagios Plugins 1.4.15 - Manubulon Plugins tuné
    Fedora Core 5 - 2.6.20-1.2320

    Comment


    • #3
      Originally posted by DonKiShoot
      echo "$lign1
      $ligne2
      $ligne3" ca donnerai quoi dans Oreon ?
      Tu peux m'expliquer un peu ton code ???
      Ce que je veux dire, c'est à quoi correspond le $ligne1, parce que si c'est la variable à laquelle il faut que j'affecte la ligne que je lis dans le fichier, il faudrait qu'au moyen d'une boucle je le fasse pour chaque ligne et ça pourrais le faire !!!

      Ensuite pour te dire ce que ça va donner dans Oreon, je te mettrais en brut ce soir ce que fourni sensors (brut de fonderie)

      Déjà si je peux trier les lignes j'aurais déjà pas mal avancé et il restera plus qu'à travailler l'aspect visuel de la chose.

      Et pour aller un peu plus loin, il sera possible au moyen du plugin check_by_ssh de récupérer ces infos sur n'importe quel système unix où lm-sensors est installé bien sur !!!

      a+
      Nagios : 2.5
      Oreon : 1.3.3
      Mysql : 4.1

      Comment


      • #4
        c t juste une idée pour afficher ligne par ligne dans oreon mais bien sur il faut dans le script savoir ou se trouve ces fameuses lignes pour y insérer des
        Intel(R) Xeon(TM) CPU 3.4GHz - MemTotal : 1034476 kB
        Centreon 2.4.1 - Nagios 3.2.1 - Nagios Plugins 1.4.15 - Manubulon Plugins tuné
        Fedora Core 5 - 2.6.20-1.2320

        Comment


        • #5
          Salut,

          Bon ça fait un bout de temps (10 jours) que j'avais poster mais j'ai pas eu le temps de m'en occuper.

          J'ai un bout de code en C mais je le trouve un peu galère et j'ai un tout petit problème avec la fonction strcat (j'ai pas souvent réussi à la faire marcher du premier coup !!! :? )

          En attendant voici le code :

          Code:
          #include <stdio.h>
          #include <string.h>
          
          
          main()
          {
             FILE *FpSource ;
             char  line[1024], jumpLine[6]="
          ", startPrint[10]="\"echo ", endPrint[5]="\"";
             char  *LineFile, *cde, *tmp, *dest;
             int i;
          
             cde = (char*)malloc (sizeof(char*) * 1024);
             tmp = (char*)malloc (sizeof(char*) * 1024);
             dest = (char*)malloc (sizeof(char*) * 1024);
          
             //sprintf(cde,"sensors >> tmp");
             //system(cde);
          
             if((FpSource = fopen("tmp", "r"))==NULL)
             {
                system("echo Open file failed !");
             }
             else
             {
                dest = startPrint;
                i=0;
                while((LineFile = fgets(line, 1024, FpSource))!= NULL)
                {
                   i++;
                   tmp = strcat(line,jumpLine);
                   dest = strcat(dest, tmp);
                   printf("Chaine numero %d : %s\n",i,dest);
                }
                fclose(FpSource);
                dest = strcat(dest,endPrint);
                printf("Chaine final : %s\n", dest);
               // system(cde);
                //system("rm -rf tmp");
             }
          }
          Toutes les commandes system sont en commentaire parce que je développe sous windows avec DevC++ avec le fichier de test en pièce jointe.

          Je pense que le mieux serait de trouver une personne agile dans le développement en bash (je ne sais pas lire dans un fichier ni faire des boucles) pour adapter mon code en C plutôt que d'avoir un bout en C et un autre bout en bash. Et surtout ce serait beaucoup plus propre que des concaténation de malade que fait mon code.

          Je rappel que mon objectif est :

          Adapter le script check_sensors pour avoir une remonté de toutes les infos uniquement quand lors de l'exécution du script, on arrive dans la partie critique (ci dessous) parce que j'aurais toujours une alerte critique car mon boitier est toujours détecté ouvert. De ce fait, je ne peux pas savoir si cela vient de la température ou des ventilateurs.


          Code:
                          if echo ${sensordata} | egrep ALARM > /dev/null; then
                                  echo SENSOR CRITICAL - Sensor alarm detected!
                                  exit 2
          Dans tout les cas, même si mon boitier serait détecté fermé mle jour où j'aurai une remonté d'alarme "critical", le problème est le même car on ne pourrait pas savoir si ça vient de la température où des ventilo. D'ou l'importance d'obtenir une remonté d'info dans oreon comme cela par exemple sur mon PC :

          w83697hf-isa-0290
          Adapter: ISA adapter
          VCore: +1.70 V (min = +1.71 V, max = +1.89 V) ALARM
          +3.3V: +3.26 V (min = +3.14 V, max = +3.47 V)
          +5V: +4.70 V (min = +4.76 V, max = +5.24 V) ALARM
          +12V: +12.16 V (min = +10.82 V, max = +13.19 V)
          -12V: -12.85 V (min = -13.18 V, max = -10.80 V)
          -5V: -5.15 V (min = -5.25 V, max = -4.75 V)
          V5SB: +5.21 V (min = +4.76 V, max = +5.24 V)
          VBat: +3.14 V (min = +2.40 V, max = +3.60 V)
          fan1: 5273 RPM (min = -1 RPM, div = 2)
          fan2: 0 RPM (min = -1 RPM, div = 2)
          temp1: +37°C (high = +0°C, hyst = +0°C) sensor = thermistor
          temp2: +52.0°C (high = +120°C, hyst = +120°C) sensor = thermistor
          alarms: Chassis intrusion detection ALARM


          a+
          Max
          Attached Files
          Nagios : 2.5
          Oreon : 1.3.3
          Mysql : 4.1

          Comment

          Working...
          X