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

Web Perl Discussion :

Exécution commande shell


Sujet :

Web Perl

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Exécution commande shell
    Bonjour à tous,

    Tout d'abord j'espère ne pas me tromper de section pour poser ma question.


    J'ai sur un serveur linux (CentOS) un module webmin constitué de pages perl.

    Dans une de celles-ci, j'affiche le résultat de commandes shell.

    Exemple :
    $cmd=`ls /`;
    print "<pre>".$cmd."</pre>";


    Seulement voilà, cette fois-ci, j'aimerais afficher en temps réel la réponse de la commande exécutée (car ça va être une commande un peu plus longue). [un top par exemple]

    J'ai testé ma commande, elle fonctionne. Une fois qu'elle a fini de s'exécuter, elle affiche le résultat. Mais ce que j'aimerais c'est qu'elle affiche le résultat PENDANT que la commande tourne... (commande qui prend environ 5minutes à s'exécuter).

    D'ou ma question, comment faire cela?


    Merci d'avance pour vos réponses


    -edit-
    Peut-etre y'a-t-il un moyen pour envoyer la commande en tache de fond et tant qu'elle y est, afficher la valeur de ma variable ?

    Un exemple :
    $cmd=`service vsftpd restart`;
    print $cmd;

    va me retourner
    Shutting down vsftpd: [ OK ]
    Starting vsftpd for vsftpd: [ OK ]


    Ce que j'aimerais c'est pouvoir afficher 1 à 1 ces lignes et pas devoir attendre que la commande ait rendu la main pour tout afficher d'un coup...

    (peut-etre est-ce plus clair comme ça ^^)

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Points : 712
    Points
    712
    Par défaut
    La réponse est que ce n'est pas faisable facilement. Pour la bonne et simple raison qu'une page web, c'est statique par essence. Pour faire cette affichage, il faudrait :
    • soit faire de l'ajax
    • soit faire un rafraichissement de la page (appelé par elle même)

    Bref, rien d'évident.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    J'ai pris le temps d'apprendre l'ajax suivant vos conseils.

    Cependant, je ne vois toujours pas l'intérêt. Le résultat d'une commande shell ne s'affichant qu'une fois celle-ci terminée...

    Lancer un "print `service vsftpd restart`;" n'affichera le résultat de la commande qu'une fois exécutée... Quel est alors l'intérêt d'aller la lancer depuis une autre page ?

    Je cherche surtout un moyen de pouvoir récupérer le résultat d'une commande shell lancée depuis un script perl PENDANT qu'elle s'exécute :s

  4. #4
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    A mettre en début de code :
    Ca évite la bufferisation de la page, le contenu est donc affiché à mesure qu'il arrive.

    Après, histoire de ne pas stocker le résultat (qui annulerait l'intérêt du code ci dessus), je ferais directement un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print `service vsftpd restart`;

    @+
    Mr6

Discussions similaires

  1. Exécution commande shell
    Par lefevrelaumonier dans le forum Shell et commandes GNU
    Réponses: 20
    Dernier message: 20/01/2015, 08h48
  2. Spawn sftp et exécution commandes shell
    Par mederik dans le forum Shell et commandes POSIX
    Réponses: 18
    Dernier message: 03/06/2013, 17h23
  3. expression régulière + excution de commande shell
    Par goanes dans le forum Langage
    Réponses: 3
    Dernier message: 11/10/2006, 13h53
  4. [Système] Exécution commandes shell
    Par rfufu dans le forum Langage
    Réponses: 1
    Dernier message: 28/04/2006, 23h30
  5. [Système] Exécution commande shell impossible
    Par mick84m dans le forum Langage
    Réponses: 5
    Dernier message: 28/04/2006, 15h43

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