Partage
  • Partager sur Facebook
  • Partager sur Twitter

Passer une variable php dans un script bash (.sh)

    24 juin 2021 à 1:02:03

    Bonjour,

    Pour les personnes intérressées, voici le code php & sh complet, parcontre je sais pas si on peut faire plus propre, j'ai bien entendu donné des exemples de username, password et nom de domaine pour des raisons de sécurité.

    Et je n'arrive pas à passer mes variables dans mon shell (voir code plus bas).

    Code page Php :

    <?php
    //affichage des erreurs php
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    require('config.php');
    
    $username="supraSupra";
    $password="test";
    
    $path = "/var/www/".$username;
    if (!is_dir($path)) {
        mkdir($path, 0777, true);
    }
    $vhost = $username.".conf";
    $query_mysql_user = "CREATE USER $username@'%' IDENTIFIED BY '$password'";
    $res_mysql_user = mysqli_query($conn, $query_mysql_user);
    $query_mysql_grant = "GRANT USAGE ON * . * TO $username@'%' IDENTIFIED BY '$password'";
    $res_mysql_grant = mysqli_query($conn, $query_mysql_grant);
    $query_mysql_create_db = "CREATE DATABASE IF NOT EXISTS $username DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci";
    $res_mysql_create_db = mysqli_query($conn, $query_mysql_create_db);
    $query_mysql_all_privilege = "GRANT ALL PRIVILEGES ON $username . * TO $username@'%'";
    $res_mysql_all_privilege = mysqli_query($conn, $query_mysql_all_privilege);
    $query_ftp = "INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('$username', '1', '".hash('MD5', $password)."', '2001', '2001', '$path', '0', '0', '', '*', '0', '0')";
    $res_ftp = mysqli_query($conn, $query_ftp);
      file_put_contents("/etc/apache2/sites-available/".$vhost, "<VirtualHost *:80>\r\n ServerName $username.test.be\r\n\r\n\r\nServerAdmin admin@test.be\r\n DocumentRoot $path\r\n\r\n\r\n ErrorLog /var/logs/apache2/error.log\r\n CustomLog /var/logs/apache2/access.log combined\r\n\r\n\r\n</VirtualHost>");
      $output = exec("./heb.sh $vhost");
    ?>


    Code Shell de heb.sh : (se trouvant dans le même dossier)

    #!/bin/bash
    
    sudo a2ensite $vhost
    sudo service apache2 reload
    


    Avez-vous des idées pour améliorer le code, passer les variables dans mon shell et le rendre plus propre svp ?

    Merci d'avance,

    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2021 à 2:27:05

      Salut je dirais que c'est un problème php.

      Pour donner des variables à un script shell dont on a pas le code.

      En bash tu as la commande read.

      Sinon pour un sh de base les variables entrées avec le script sont nommées de $1 à $x...

      Je n'ai pas regardé ton code php pour être honnête. J'ai eu l'habitude de faire du login/mdp vraiment sécurisés donc cryptés dans un SGBDR.

       En gros script.sh test

      test devient la variable $1 et si plus d'arguments à passer au script ça sera $2 et $3 etc...(et la commande shift pour passer à la variable suivante)

      En bash la commande read semble plus pratique.

      Donc la commande à passer à ton script ne devrait pas commencer par un $, vu qu'elle sera considérée comme variable $1 dans le script en lui même.

      • Partager sur Facebook
      • Partager sur Twitter

      Passer une variable php dans un script bash (.sh)

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown