Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/10/2016, à 13:59

petit_lutin

[Résolu] Problème d'exécution d'un script

Bonjour,
Après un week-end de recherches et de tentatives, j'abandonne et demande de l'aide.
Je débute dans l'utilisation des scripts bash exécutés dans un site en php.
Voici mon script base.sh :

#!/bin/bash
sudo service nom_du_service restart

Je cherche à le faire fonctionner par une page base.php:

<?php
exec("base.sh");
?>

J'ai réduit le code au minimum pour tenter de me concentrer sur cette énigme. Mais le script n'est pas exécuté.

Indépendamment du serveur, quand je fais :

sudo bash base.sh

cela fonctionne.

Les droits sont pour les deux fichiers 777 (c'est sur un serveur privé inaccessible de l'extérieur du réseau).
C'est un serveur apache 2.4 avec php7.
J'ai tenté plusieurs syntaxe d'exec(), passthru()... mais rien.

J'avais prévenu que je débutais, donc merci de votre indulgence et de votre aide.

Dernière modification par petit_lutin (Le 10/10/2016, à 21:24)

Hors ligne

#2 Le 10/10/2016, à 16:33

pires57

Re : [Résolu] Problème d'exécution d'un script

Bonjour,

Tu donnes à la fonction exec un nom de script (base.sh) mais où doit chercher exec?
La fonction ne part pas en récursif depuis la racine, je te conseille donc de lui donner le chemin de ton script.


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#3 Le 10/10/2016, à 16:57

petit_lutin

Re : [Résolu] Problème d'exécution d'un script

Le script est dans le même répertoire que la page. Je cherche un moyen d'intégrer les droits d'exécution au sudo du fichier. Je vais mettre le lien du script en récursif.

Hors ligne

#4 Le 10/10/2016, à 20:25

petit_lutin

Re : [Résolu] Problème d'exécution d'un script

J'ai tenté ce lien : http://blogmotion.fr/systeme/executer-u … n-php-1312
Mais, bien qu'ayant suivi les directive, cela ne fonctionne pas. Et en plus, je ne suis pas très chaud de manipuler visudo.

N'y a-t-il pas un moyen de redémarrer un service du serveur via une interface php ? Quitte à entrer l'identifiant et le mot de passe du serveur ?

Hors ligne

#5 Le 10/10/2016, à 21:24

petit_lutin

Re : [Résolu] Problème d'exécution d'un script

Bon, bâ j'ai fini par trouver une solution avec les commandes :
ssh2_connect()
ssh2_auth_password()
ssh2_exec()
et pour la sécurité fclose().

Cela ne fonctionnait pas jusque là car, un grand classique, le module php-ssh2 n'était pas installé.
Merci quand même.

Hors ligne

#6 Le 12/10/2016, à 16:27

jlmas

Re : [Résolu] Problème d'exécution d'un script

Relancer un service est normalement l’apanage du système.  Il y a pleins d'outils qui le permettent (les unit systemd sur les 16.04, monit...) suivant tout un tas de conditions assez exhaustives.
Es tu sûr d'avoir besoin utiliser apache et php pour relancer un service système ?
Car à première vue et sans plus d'informations, c'est horriblement crade et très moyennement sécurisé.

Hors ligne

#7 Le 12/10/2016, à 18:52

petit_lutin

Re : [Résolu] Problème d'exécution d'un script

Je penses bien que la solution n'est pas idéale. C'est un bricolage avec mes connaissances. Je ne connais pas les unit systemd.
Mon objectif est d'avoir accès à un proxy en cas de besoin, sans avoir à entrer les mots de passe du root du serveur.
Du coup j'ai installé Tinyproxy (très simple à mettre en place et configurer à mes besoins) sauf qu'il n'accepte que les IP configuré dans son fichier .conf. Avec un système de droit particulier, j'insère mon automatiquement mon IP de connexion à ce fichier (chaque nouvel IP écrase le précédant), il ne me manquait plus qu'un moyen de relancer le service pour qu'il le prenne en charge.
J'ai toujours eu un problème avec les vpn (certains blocages en fonction des réseaux et d'où j'étais, voir des ordinateurs qui plantaient avec openvpn...).
Là c'est une simple page php, inaccessible directement, protégé par un htaccess (Require all denied).

Où la page est chargé après mettre identifié sur une autre, qui elle est elle-même protégé par un htpasswd.
Mais je ne le fais que parce que c'est sur un vps d'OVH (à jour et d'Ubuntu 16.04) qui n'a une durée de vie que d'un mois (et il est bien avancé). C'est un bricolage qui dépanne en cas de besoin.

Hors ligne