[PHP] execution d'un fichier BASH
marco
-
avion-f16 Messages postés 20367 Date d'inscription Statut Contributeur Dernière intervention -
avion-f16 Messages postés 20367 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- [PHP] execution d'un fichier BASH
- Fichier bin - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
8 réponses
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
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
Salut, personnellement j'utilise la ligne de commande comme ca :
ne vous preoccupez pas des 2 derniers args
$cmd = "unzip $source -d $temporary_target"; exec($cmd, $exec_output, $exec_retval);
ne vous preoccupez pas des 2 derniers args
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
toujours pas...
voilà le code php :
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...
mais il marche bien quand il est pas lancé par PHP :/
Perso j'ai plus d'idée là...
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à...
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
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
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 :
"
" //pour chaque machine.
En Php j'ai seulement :
"
" //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
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
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!!
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!!