Announcement

Collapse
No announcement yet.

recupérer dans une variable une valeur affichée à l'écran

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

  • recupérer dans une variable une valeur affichée à l'écran

    Bonjour, c'est encore et tjrs moi dsl...
    Voila je lance en perl un petit prog en c (il s'appel ess) qui affiche tout simplement "coucou" à l'ecran j'utilise
    Code:
    $prog=system("/home/lpaii/Desktop/ess");
    J'aimerais pouvoir récupérer cette chaine de caractères sans passer par un fichier texte. Je sais que cela fonctionne:
    Code:
    $prog=system("/home/lpaii/Desktop/ess >gui.txt");
    J'ai essayé de faire
    Code:
    $prog=system("/home/lpaii/Desktop/ess");
    $chaine=<STDOUT>;
    mais cela ne fonctionne pas est ce que quelqu'un à une idée?j 'ai pas mal cherché mais je n'ai rien trouvé
    merci d'avance
    @bientot

  • #2
    Code:
    $pid=system($f, "/home/lpaii/Desktop/ess |");
    while (<f>) {
       print $_;
    }
    C'est de mémoire...
    Le truc c'est le pipe | à la fin de la commande à ne pas oublier![/code]
    RedHat Advanced Server 4.0
    Nagios 2.3.1
    Oreon 1.3b1

    Comment


    • #3
      Merci pepito
      Mais ca marche pas
      @ bientot

      Comment


      • #4
        Bonsoir,

        Essaye plutôt open:
        Code:
        open(FIC1,"/home/lpaii/Desktop/ess|");
        while (<FIC1>) {
        ...
        }

        Comment


        • #5
          Hello,

          tu peux essayer ça aussi :

          $_ = `/home/lpaii/Desktop/ess`;
          et après tu traite $_
          StatusMap Module - NDO Tools Module - ImportCSV Module - SNMP-UI Module - PDFReports Module
          Dons Paypal

          Comment


          • #6
            ah oui pardon c'etait open(...) pas system(...)
            RedHat Advanced Server 4.0
            Nagios 2.3.1
            Oreon 1.3b1

            Comment


            • #7
              Exemple pour un de mes scripts :

              $netbiosname = qx(nmblookup -A $ip | grep \'<03>\' | awk \'{print \$1}\');
              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


              • #8
                Bonjour,
                Code:
                $netbiosname = qx(nmblookup -A $ip | grep \'<03>\' | awk \'{print \$1}\');
                Là tu utilises Perl pour lancer une commande. C'est OK. Cependant, tu utilises ensuite les outils grep et awk. Pourquoi ne pas remplacer l'appel à grep et awk par du code Perl? Ce serait plus rapide et plus efficace. Voire plus simple.

                Comment


                • #9
                  A vrai dire, je fais ce que je peux :lol:

                  De plus, je ne suis pas sure que ce soit beaucoup plus rapide de passé par une analyse en perl étant donné que les commandes auxquelles je fait appel sont des binaires (non interprété de mon point de vu).
                  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


                  • #10
                    De plus, je ne suis pas sure que ce soit beaucoup plus rapide de passé par une analyse en perl étant donné que les commandes auxquelles je fait appel sont des binaires (non interprété de mon point de vu).
                    Disons que là tu fais 3 forks en passant les résultats dans des pipes. De plus, Perl passe par une étape de compilation intermédiaire. ce qui fait qu'il "n'est pas si lent que ça". Bref, c'est du détail
                    :wink:

                    Comment


                    • #11
                      Merci, pepito et templuche cela fonctionne parfaitement :
                      Code:
                      open(FIC1,"/home/lpaii/Desktop/ess|"); 
                      while (<FIC1>) { 
                      ... 
                      }
                      Mais il reste encore un soucis. Mon plugin récupère les données de température dans la trame pour les mettres dans des variables.Quand mon plugin utilise un fichier pour compléter les varaiables elles sont affichées sous Oreon sans problème par contre quand j'utilise cette partie de code les valeurs récupérées ne sont pas affichées sous Oreon alors que dans le shell cela fonctionne parfaitement avec les 2 méthodes.
                      Bizarre...
                      @bientot

                      Comment


                      • #12
                        Hello,

                        qu'est ce qui s'affiche dans Oreon ?

                        est que tu fait plusieurs "print" dans ton plugin ?
                        nagios ne parse pas les sorties multilignes.
                        StatusMap Module - NDO Tools Module - ImportCSV Module - SNMP-UI Module - PDFReports Module
                        Dons Paypal

                        Comment

                        Working...
                        X