PHP - Lancer des processus shell dans une page php

Introduction






Lancer une commande et afficher le résultat dans la page



Code PHP :
<?php
$output = shell_exec('cat /etc/hosts');
echo "<pre>$output</pre>";
?>
 



Afficher périodiquement les 20 dernières lignes d'un fichier de log



Code PHP :
<?php
header("Refresh: 1;url=http://192.168.18.4/syslog.php");
$output = shell_exec('tac /var/log/syslog | head -n20');
echo "<pre>$output</pre>";
?>



Lancer un script détaché de la page php



Il est nécessaire de posséder screen sur le serveur :

Code PHP :
<?php
shell_exec('screen -dm sleep 60');
?>


Si on veut s'assurer que le script ne soit lancé qu'une fois, on nomme notre screen et on vérifie s'il existe :

Code PHP :
<?php
$val = shell_exec('screen -ls | grep -c php ');
//echo $val;
 
if ( $val < 1 ) {
        shell_exec('screen -dmS php sleep 60');
} else {
        echo "La commande a déja été lancée";
}
?>



Lancer un script en root



Il suffit de mettre sudo dans la commande (et d'avoir accessoirement sudo d'installé) :

Code PHP :
<?php
$output = shell_exec('sudo id');
echo "<pre>$output</pre>";
?>
 


Oui, mais , qui renseigne le mot de passe ??

Solution "bourrin" :hurt3: :
/etc/sudoers:
www-data ALL = NOPASSWD: ALL


Se référer à l'article Sudo : Utiliser et paramétrer pour plus d'infos.
Cette page a été vue 12800 fois