Forum Linux.redhat exécution de script via une page web

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
3
juil.
2017

Bonjour,

j'aimerais exécuter mon script via une page page en créant une page php avec le code ci dessous.

comment dois je paramétrer ma conf pour pouvoir l'afficher (adresseIP/script par exemple)

merci pour votre aide

<?php
if(isset($_POST['exec']))
{
  if(isset($_GET['action']) && $_GET['action'] == 'yes')
  {
    $cmd = exec(escapeshellcmd('/cheminAbsolu/script.sh/'));

    if($cmd)
    {
       echo 'ok';
    }
    else
    {
       echo 'ko merci d analyser';
    }
  }
}

echo '<form method="post" action="/cheminAbsolu/script.sh?action=yes">
<input type="submit" name="exec" value="Executer" >
</form>';
?>
  • # J'ai un peu de mal à compendre ce que tu veux

    Posté par  . Évalué à 2. Dernière modification le 03 juillet 2017 à 19:06.

    comment dois je paramétrer ma conf pour pouvoir l'afficher (adresseIP/script par exemple)

    Veux-tu afficher la chaine retournée sur la sortie standard du script ? par exemple si ton script affiche "coucou", est-ce que tu veux afficher "coucou" sur la page web ?

    Si c'est ce que tu veux faire, le manuel php pour exec indique :

    string exec ( string $command [, array &$output [, int &$return_var ]] )

    Si l'argument output est présent, alors ce tableau sera rempli par les lignes retournées par la commande. Les espaces de début et de fin de chaîne, comme \n, ne seront pas inclus dans ce tableau. Il faut noter que si ce tableau contient des éléments, exec() ajoutera les nouvelles lignes à la fin du tableau. Si vous ne voulez pas que les nouveaux éléments soient concaténés, utilisez la fonction unset() avec ce tableau avant de le passer à exec().

    Si tu veux afficher la sortie de ton script, tu passes à exec un argument output de type tableau, qui contiendra, après l'appel de ton script, une cellule par ligne que ton script aura retourné. Pour afficher, tu n'auras qu'à boucler sur ce tableau et afficher les cellules une à une.

    • [^] # Re: J'ai un peu de mal à compendre ce que tu veux

      Posté par  . Évalué à 2. Dernière modification le 03 juillet 2017 à 19:11.

      Aparamment, il y a plus simple si ton script ne renvoie qu'une seule ligne (toujours d'après le manuel) :

      Valeurs de retour

      La dernière ligne du résultat de la commande. Pour exécuter une commande et obtenir le résultat sans aucun traitement, il faut utiliser la fonction passthru().

      <?php
      // Affiche le nom d'utilisateur qui fait tourner le processus php/http
      // (sur un système ayant "whoami" dans le chemin d'exécutables)
      echo exec('whoami');
      ?>

      en faisant un truc du style echo exec('tonscript.sh'), ça devrait afficher la sortie de ton script.

  • # Exemple maison

    Posté par  . Évalué à 2. Dernière modification le 03 juillet 2017 à 19:24.

    Exemple 1
    Un exemple où on exécute une commande et affiche le résultat (dans le cas présent on télécharge une page via tor et on l'affiche) :

    <?php
    $URL="https://x53nxts56jccs2hi.onion/";
    print_r( exec("echo `torsocks wget -qO- ".$URL." --no-check-certificate`"));
    ?>

    source : https://www.0rion.netlib.re/forum4/viewtopic.php?f=9&t=105#p161

    Exemple 2
    Un autre exemple où on lance un script externe depuis PHP afin de vérifier si un site est en ligne

    test.php

    <?php
    $URL="https://x53nxts56jccs2hi.onion/";
    
    print_r (exec('./test.sh '.$URL.' 2>&1'));
    ?>

    qui exécute test.sh

    #!/usr/bin/env bash
    URL=$1
    torsocks wget -q --spider $URL --no-check-certificate >/dev/null 2>/dev/null
    if [ $? -eq 0 ]; then
        echo "[+] $URL is online"
    else
        echo "[-] $URL is offline"
    fi

    source : https://www.0rion.netlib.re/forum4/viewtopic.php?f=9&t=105#p160

    Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.