Rechercher : dans
Par :

[PHP] execution d'un fichier BASH

Dernière réponse le 9 oct 2009 à 17:48:20 marco, le 31 mai 2005 à 16:34:36 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [PHP] execution d'un fichier BASH » dans :
PHP - Les fichiers Voir La gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
[Webmaster] Afficher facilement le code php/xhtml de vos pages VoirSi vous voulez proposer a vos visiteurs de voir la source de vos fichiers (PHP ou HTML), il y a plusieurs solutions. En php Afficher le code php Afficher le code html En html Informations Voir aussi En php Afficher le code php La...

1

kilian, le 31 mai 2005 à 16:50:31
  • +3

Salut,

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

Répondre à kilian

2

karine, le 31 mai 2005 à 16:53:13

Salut !

Ecris peut-etre exec("./script.bash") car exec reçoit en paramètre une commande shell.

Répondre à karine

3

marco, le 31 mai 2005 à 17:28:37

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

Répondre à marco

4

Romain, le 31 mai 2005 à 17:45:14

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

Répondre à Romain

5

Romain, le 31 mai 2005 à 17:46:51

... mais ils sont essentiels (en tout cas pour moi) meme si on ne s'en sert pas

Répondre à Romain

6

marco, le 1 jun 2005 à 09:06:34

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à...

Répondre à marco

7

marco, le 1 jun 2005 à 09:33:49

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

Répondre à marco

8

marco, le 3 jun 2005 à 10:37:28

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

Répondre à marco

9

marco, le 6 jun 2005 à 10:54:31

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!!

Répondre à marco

10

ShadowAngel, le 22 aoû 2007 à 16:12:49

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

Répondre à ShadowAngel

11

niano, le 9 oct 2009 à 17:45:18

Et en langue française aussi...

Répondre à niano

12

 avion-f16, le 9 oct 2009 à 17:48:20

Et ne pas remonter les vieux topics dont la dernière réponse date de plus de 2 ans ... Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu­ lui dis de faire.

Répondre à avion-f16