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

Langage PHP Discussion :

[Système] Fonction exec() et script perl


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 244
    Points : 159
    Points
    159
    Par défaut [Système] Fonction exec() et script perl
    Bonjour à toute et à tous,

    J'ai besoin dans un script php d'executer un script en perl.
    Le script perl s'execute de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl check_storage_bw.pl -H ADRESSE IP - C public -g -w 80 -90
    Je ne vois pas trop comment l'executer dans mon php. Pourriez vous m'aider ? sachant que je dois l'executer dans une boucle car j'ai 165 serveurs. Le script me permet d'obtenir une bande passante moyenne ainsi que la bande passante utilisé pour chaque serveur.

    Je vous remerci d'avance

    edit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec("perl check_storage_bw.pl -H IP -C public-v 2 -w 80 -c 90 -g");
    Ne marche pas, et sans le "perl" pareil :'(

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Ne marche pas
    Pourquoi ? Qu'est-ce qui te fait dire que ça marche pas ?
    Si tu passes le chemin complet /usr/bin/perl ou autre est-ce que ça marche ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 244
    Points : 159
    Points
    159
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(exec('/usr/bin/perl check_storage_bw.pl -H IP -C public-v 2 -w 80 -c 90 -g'))
    {
    	echo "Script Ok !!";
    } else
    {
    	echo "Prob lancement script !!";
    }
    J'obtient : Prob lancement script !!

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    utilise passthru() à la place de exec() pour voir ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 244
    Points : 159
    Points
    159
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(passthru('/usr/bin/perl check_storage_bw.pl -H ip -C public-v 2 -w 80 -c 90 -g'))
    {
    renvoi toujours impossible, et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(passthru('perl check_storage_bw.pl -H Ip -C public-v 2 -w 80 -c 90 -g'))
    Pareil :s désesperant

  6. #6
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    As-tu réussi à lancer des commandes plus simples ? Du type exec("ls") par exemple ?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 244
    Points : 159
    Points
    159
    Par défaut
    Oui. J'ai meme réussi a lancer un script.sh, le probleme etant que comme j'ai 165 serveur, je dois pouvoir changer le champ "-H", or dans un script.sh je ne vois pas du tout comment récuperer la liste des IP et je ne vois pas non plus comment mettre l'appel du fichier dans une boucle...

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Dans ta console, tu tape Puis tu copie colle ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php 
    passthru('perl  --version'); 
    ?>
    Puis tu sors en faisant ctrl-d

    Qu'est ce que ça dit ?

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 244
    Points : 159
    Points
    159
    Par défaut
    Excuse moi du retard, je n'etais pas dispo hier.

    Donc quand je fais cette commande, j'obtiens :
    php -q
    <?php
    passthru('perl --version');
    ?>


    This is perl, v5.8.8 built for i486-linux-gnu-thread-multi

    Copyright 1987-2006, Larry Wall

    Perl may be copied only under the terms of either the Artistic License or the
    GNU General Public License, which may be found in the Perl 5 source kit.

    Complete documentation for Perl, including FAQ lists, should be found on
    this system using "man perl" or "perldoc perl". If you have access to the
    Internet, point your browser at http://www.perl.org/, the Perl Home Page.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 244
    Points : 159
    Points
    159
    Par défaut
    Ce qui est étrange c'est que :
    php -q

    <?php
    passthru('perl check_storage_bw.pl -H IP -C public -v 2 -g -w 80 -c 90');
    ?>


    Traffic In : 2.39 kb/s (0.0 %), Out : 1.34 kb/s (0.0 %) - Total RX Bits In : 378.85 Mo, Out : 234.00 Mo|traffic_in=2388,7Bits/s traffic_out=1339,7Bits/s
    fonctionne. Mais seulement quand je met mon check_storage dans un endroit précis. Vais essayer de faire un raccourci vers cette endroit !

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 244
    Points : 159
    Points
    159
    Par défaut
    Voici comment faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    passthru('perl /usr/local/nagios/libexec/check_storage_bw.pl -H IP -C public-v 2 -g -i 2 -w 80 -c 90')

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/07/2009, 18h47
  2. Réponses: 2
    Dernier message: 08/11/2007, 14h11
  3. [Système] Fonction exec() et assimilées
    Par guidav dans le forum Langage
    Réponses: 4
    Dernier message: 24/04/2007, 10h41
  4. [Système] fonction exec() avec Java
    Par alexK73 dans le forum Langage
    Réponses: 4
    Dernier message: 11/04/2007, 17h21
  5. [Système] Fonction exec dans un lien et synthaxe
    Par mLk92 dans le forum Langage
    Réponses: 6
    Dernier message: 13/07/2006, 11h45

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