[PHP] execution d'un fichier BASH

Fermé
marco - 31 mai 2005 à 16:34
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 9 oct. 2009 à 17:48
Bonjour,

Merci de lire mon post ;)
Je vous rassure, j'ai bien lu les messages portant sur le même sujet, mais je n'y ai pas trouvé ma réponse...

Voilà : je voudrais exécuter un fichier de script shell lancé par PHP (avec n'importe laquelle des commandes "exec-like").
Je veux faire l'inventaire des IP et MAC du réseau avec nmap. Comme ya trois réseaux différents, je voudrais lancer un script shell du genre :

- nmap [...] > nmap1.txt
- nmap [...] > nmap2.txt
- nmap [...] > nmap3.txt
quelques commandes pour trier, joindre etc. et obtenir à la fin un fichier "clean" avec juste les infos dont j'ai besoin, que je pourrais lire avec PHP et un fopen().

Je sais que je pourrais le faire avec PHP uniquement une fois les nmap effectués mais je préfère un script shell.

Donc j'ai testé un exec("script.bash") contenant les 3 lignes nmap ci-dessus mais les fichiers txt ne sont pas créés... les causes possibles?

Merci d'avance de vos réponses et bonne soirée
A voir également:

8 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
31 mai 2005 à 16:50
Salut,

Tu as essayé ton script bash directement sur un shell?
2
Salut !

Ecris peut-etre exec("./script.bash") car exec reçoit en paramètre une commande shell.
0
le script bash fonctionne bien quand il est lancé directement par la console, et le ./script.bash dans le exec() ne change rien, aucun fichier n'est créé en sortie...
je vois pourtant rien d'illogique...
si quelqu'un pouvait m'envoyer un bout de code qui marche lui afin que je compare.
merci de vos réponses, et merci d'avance pour les prochaines
0
Salut, personnellement j'utilise la ligne de commande comme ca :
$cmd = "unzip $source -d $temporary_target";
	exec($cmd, $exec_output, $exec_retval);

ne vous preoccupez pas des 2 derniers args
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
... mais ils sont essentiels (en tout cas pour moi) meme si on ne s'en sert pas
0
toujours pas...
voilà le code php :

<?
echo "Lancement du script de recherche...<br />";

//code de romain
$cmd="maj.bash";
exec($cmd, $exec_output, $exec_retval); 
foreach($exec_output as $exec_outputline)
{
   echo("$exec_outputline<br>");
}

//code de php.net
$cmd2="ls -l";
exec("$cmd2 2>&1", $output); 
foreach($output as $outputline)
{
   echo("$outputline<br>");
}

echo "Fin d'éxecution du script de recherche <br />";
?>


Et à l'affichage seul le code de php.net a fonctionné.
exec_output est bien un tableau ais apparemment vide...
Je précise aussi que le fichier shell est en 777

Je vous mets le code shell, dès fois que...

#!/bin/bash

echo "Lancement de la commande récupération des hôtes des réseaux..."
nmap -sP IP/24 > "nmap1.tmp"
nmap -sP IP/24 > "nmap2.tmp"
nmap -sP IP/24 > "nmap3.tmp"

echo "Fin"


mais il marche bien quand il est pas lancé par PHP :/

Perso j'ai plus d'idée là...
0
marco > marco
1 juin 2005 à 09:33
oki, c'est résolu.
J'ai redirigé les .tmp vers le dossier qui est fait pour ça lol > /tmp/ et là bizarrement ça marche! lol forcement je crois que le problème venait du fait que ne précisant pas le chemin complet bah le système essayait d'écrire à la racine / et jpense pas qu'on puisse, même en root...
enfin bref, c'est résolu

Merci à vous, et pour ceux qui ont le même problème :
http://lists.ze-linux.org/2003-08/msg00145.html
voilà le post d'un forum qui m'a débloqué ^^ si ca peut servir...


Bonne journée à tous
0
Re!
J'avais posté un nouveau problème dans le forum Unix-Linux car il concerne la commande shell NMAP, et vu que je n'ai pas bcp de réponses, on me conseille aussi ce forum

-------
Je viens de voir un truc bizarre avec la commande nmap:
Est ce normal qu'un "nmap -sP IP/24 > /tmp/test.tmp" lancé par console affiche 2 lignes par hôte (host+\n+@Mac), et que le même nmap lancé par un exec() de PHP n'affiche que la ligne host ??

(//Ce post pourrait faire partie aussi du forum programmaion mais je voudrais savoir si ce résultat est dû à une particularité de nmap.) Au vu de ce résultat, j'ai l'impression que nmap lance une autre commande pour pouvoir afficher l'@mac correspondant au host trouvé, ce qui expliquerait peut être pourquoi avec PHP je n'obtient que les lignes host...
lien : http://www.commentcamarche.net/forum/affich-1564004-%5BCOMMANDE%5D-Etranget%E9-de-Nmap
------

Résultat de la commande :
En console j'ai :
"
Host [@IP] appears to be up.
MAC Address: [@MAC] (type machine)

" //pour chaque machine.

En Php j'ai seulement :
"
Host 170.60.248.1 appears to be up.

" //pour chaque machine.


Suivant les réponses du forum Unix-Linux, j'ai appliqué certaines modifications qu'on m'a conseillées (2>&1 par exemple) mais cela ne fonctionne pas mieux. Qulequ'un a déjà eu ce genre de problème? une solution?

Merci de votre aide, et bien bonne journée à vous
0
Up!
Re!
J'ai tout essayé, les exec, system et passthru mais rien n'y fait. Please si quelqu'un pouvait m'aider! un grand merci d'avance!!
0
a ckeu g testé, lé commande exec(), et lé otre dan le mm style, sont bloqué par lé hbergeur, jpeu faire ocune commande du genre ipconfig... ext. en php.

ca vien peu etre de la..
apré jsui débutan en php
0
et en langue française aussi...
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497 > niano
9 oct. 2009 à 17:48
Et ne pas remonter les vieux topics dont la dernière réponse date de plus de 2 ans ...
0