• Serveurs
  • [RESOLU] Executer un .sh dans une page PHP ou HTML

J'ai une page toute blanche
Y'avait une erreur dans mon code, recommence.
Et modifie "user" par ton nom d'utilisateur...
Ok, donc la ça liste bien mon repertoire "user".

Donc, si je veux executer mon script.sh, je fais
<?php
$output = shell_exec('/home/user/script.sh');
echo "<pre>$output</pre>";
?>
Pour lancer mon .sh ?
Balance ton .sh stp

Soit
echo shell_exec('sh $_SERVER['DOCUMENT_ROOT'].'/ton_fichier.sh');
echo shell_exec($_SERVER['DOCUMENT_ROOT'].'/ton_fichier.sh');
ou
echo shell_exec('sh /path/to/ton_fichier.sh');
echo shell_exec('/path/to/ton_fichier.sh');
essaie un peu tout 😛
Voir si "shell_exec" n'est pas interdit d'utilisation par PHP pour l'utilisateur Apache.

Si tu désire continuer dans cette voie, pense a deux petit détails:
- Ce que tu exécutes est exécuter par l'utilisateur apache...(pense aux implications...)
- les scripts lancé via cette commande... Ne doivent pas durer trop longtemps... sous peine d’être arrêté brusquement avant d'avoir finie.

Quoiqu'il en soit, Voici mon petit script de panel de gestion de jeu qui semble correspondre a ce que tu recherche. Il est simpliste et adaptable.

WebPanel

utilisation de "sudo" pour lancer l'appli avec le bon user. ( sécurisation via sudoers.d avec "www-data ALL=(user) NOPASSWD: /home/user/script.sh *" )
utilisation de "at" pour les script qui ont un traitement long. (autoriser "at' pour l'utilisateur apache")

a+
Pour CocaCola :

Voiçi mon .sh
screen -dmS public ./cod4_lnxded +exec public.cfg +map_rotate +set dedicated 2 +set net_ip IP_DE_MON_SERVEUR +set net_port 28962 +set ui_maxclients 20 +set fs_basepath /home/cod4/master +set fs_homepath /home/cod4/master +set fs_game mods/pml220
Merci MorgenDavid, je vais regarder sa
Salut !

Merci pour vos réponses.
Je suis arrivé a mes fins !

J'explique comment (ça peut servir a d'autres 😉) :

J'ai créer une page HTML avec un bouton "RESTART WAR PCW" (qui envoie vers mon script php)

J'ai ensuite créer un script php ce nommant : rebootwarpcw.php

Dedans, j'ai mis :
<?php

echo "Veuillez patienter, le serveur WAR PCW redemarre.";
echo '<br>';
echo "Vous pouvez fermer cette page.";

exec('/home/cod4/master/stopwarpcw.sh');
sleep (3);    //temps de pause entre les deux scripts
exec('/home/cod4/master/startwarpcw.sh');

?>
Voiçi le contenue de mon script "stopwarpcw.sh"
#bin/bash

cd /home/cod4/master 

screen -S NOM_DE_MON_SCREEN -X quit
Et voiçi le contenue de mon script "startwarpcw.sh"
#bin/bash

cd /home/cod4/master 

screen -AdmS NOM_DE_MON_SCREEN ./cod4_lnxded +exec warpcw.cfg +map_rotate +set dedicated 2 +set net_ip IP_DE_MON_SERVEUR +set net_port 28961 +set ui_maxclients 20 +set fs_basepath /home/cod4/master +set fs_homepath /home/cod4/master +set fs_game mods/pml220
Et voila

Le bouton de la page HTML va donc appeler mon script php, qui lui demande au serveur d'éxecuter le script "stopwarpcw.sh", d'attendre 3 secondes, et d'éxecuter le script "startwarpcw.sh"

Bien entendu, un chown www-data:www-data sur la page HTML et les scripts PHP.

A+
    Merci pour ton retour ! Ca pourra peut etre m'être utile
    4 ans plus tard

    CLusmi Est ce que tu peux me montrer le code de la page HTML stp !?
    Merci

    Salut !

    Je n’ai plus la page sous la main, ce topic date pas mal ^^

    Mais il suffit d’ajouter un bouton vers le chemin de ton php.

    <a href="chemin-du-php.php><input type="button"></a>

    Merci pour le topic & les exemples, c'est une question que je me posais en plus 😛

    Répondre…