IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Exécution de script linux


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    dsi
    Inscrit en
    Mars 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dsi

    Informations forums :
    Inscription : Mars 2003
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Exécution de script linux
    Bonjour a tous,
    Je suis sur un script aec lequel je cherche a executer des commandes IPTABLES.
    Je suis sur une debian 4.
    J'ai bien configuré sudo (sudoer -> www-data ALL=NOPASSWD:/sbin/iptables, /sbin/route, /sbin/ifconfig et ceci a l'aide de visudo !).

    Mon script php demande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $path_cmd="sudo /var/www/firewall/Script/iptables-script1";
    	$temp=exec($path_cmd);
    Mais le script ne s'exécute pas ...

    Le point critique de ce script est une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for adr_mac in $MAC_ADRESSE
    do
    	if  echo $adr_mac|grep -q '^00'
    	then
    		#echo -e "\033[1;31m${NOM}\033[0m"
    		#echo -e "\033[1;32m${adr_mac}\033[0m"
    		NOM=""
    		sudo  /sbin/iptables -t nat -A PREROUTING -i eth1 -m mac --mac-source $adr_mac -p tcp -m multiport --dport 80,110,25,20,21,443,1863 -j ACCEPT
    		sudo  /sbin/iptables -t nat -A PREROUTING -i eth0 -m mac --mac-source $adr_mac -p tcp -j ACCEPT
     	else 
    		#NOM="${NOM} ${adr_mac}"
    	fi
    done
    Si je la met en remarque tout roule ..

    Avez vous une idée ?.
    Merci a tous pour votre interret.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Est-ce que ton script fonctionne s'il est appellé en dehors de PHP ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    dsi
    Inscrit en
    Mars 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dsi

    Informations forums :
    Inscription : Mars 2003
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Oui il fonctionne.
    Il fonctionne parfaitement ...
    Mais je suis loggé en root.
    Si j'eleve la boucle de mon script il fonction parfaitement via PHP.

    Mon seul soucis est en fait le droit pour www-data d'executer la boucle...

    J'ai changé ma demande d'execusion avec la commande php suivante :
    $path_cmd="/var/www/firewall/Script/iptables".$Cmd;
    passthru($path_cmd,$temp);
    echo $temp;
    Ca fonctionne bien ... mais des qu'un de mes script a une boucle, elle ne s'execute pas.

    Merci pour votre interet et votre reponse.

  4. #4
    Membre à l'essai
    Profil pro
    dsi
    Inscrit en
    Mars 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dsi

    Informations forums :
    Inscription : Mars 2003
    Messages : 13
    Points : 13
    Points
    13
    Par défaut La reponse :
    Bonjour a tous,
    J'ai eu enfin ma reponse et c'était ... de ma faute ! comme d'ab ...

    Mon fichier sudoer etait bien.
    Mes scripts s'executaient bien sous root ou via sudo
    MAIS :
    Il faut savoir que avec les commandes EXEC SYSTEM ou autre de PHP, quand un script shell fait appel a des fichiers de données (meme s'ils se trouvent dans le meme repertoire que le script) il faut bien mettre dans le script shell le chemin d'acces absolu aux fichiers de données.
    Dans mon cas :
    Un interface PHP ajoute/supprime des adresses MAC et des NOM/PRENOM/PASS dans des fichier texte.
    Via l'interface PHP on peut aussi piloter le firewall en jouant des scripts s'appuyant sur ce fichier texte d'adresses mac/nom/....
    Si dans les scripts IPTABLES je ne met pas le chemin complet d'acces a ces fichiers texte, si PHP les execute cela ne fonctionne pas (voir log apache), malgres le fait que sous le shell ils fonctionne parfaitement avec un chemin d'acces relatif !.

    Voila.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. exécution de script linux a partir de Windows
    Par vlr1976 dans le forum Linux
    Réponses: 3
    Dernier message: 01/12/2010, 19h32
  2. [Système] Exécution d'un script linux sous php
    Par 123654789 dans le forum Langage
    Réponses: 1
    Dernier message: 15/09/2008, 15h56
  3. [MySQL] exécuter un script php en commande linux : problème sur les fonctions mysql
    Par dr_octopus74 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/03/2007, 16h34
  4. Exécution de script sous Linux
    Par GauleDoRak dans le forum Linux
    Réponses: 2
    Dernier message: 16/11/2006, 08h38
  5. Exécuter un script SQL
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/03/2004, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo