Page 1 sur 1

Script php nslookup

Posté : 28 oct. 2005, 10:23
par websat
Salut
J'ai un script qui fonctionne sous dos avec la commande: nslookup qrc29-1.dslg.proxad.net comment transferer cette commande pour afficher le resultat dans une page php ?
Merci

Posté : 28 oct. 2005, 11:34
par zeus
Est-ce que la fonction exec pourrait te convenir ?

Lit bien tout sur les valeurs de retour ;)

Posté : 03 nov. 2005, 13:40
par Invité
La fonction exec me convient, mais comment faire apres ?
merci

Posté : 03 nov. 2005, 14:06
par sadeq
L'idée est de créer un batch qui exécute la commande nslookup et renvoi le résultat dans un fichier log :

Code : Tout sélectionner

nslookup %1 >nslookup.log
que je nomme par exemple nslook.bat pour ne pas le confondre avec la commande nslookup (le nom du batch ne doit pas être nslookup pour éviter la récurcivité).

Ensuite dans ton programme PHP lance le batch et affiche le fichier log porteur du résultat:
<?
exec("nslook.bat qrc29-1.dslg.proxad.net");
?>
<iframe src="nslookup.log" width="100%" height="100%"></iframe>
où nslook.bat est le nom de ton batch et nslookup.log est le fichier log créé par le batch

Posté : 03 nov. 2005, 14:13
par zeus
Comme ce que je t'ai dit, il faut lire la partie sur la variable output

Tu executes ta fonction avec exec et tu récupères le résultat de cette exécution dans la variable output

Il ne te reste ensuite plus qu'a afficher ta variable dans ta page PHP

Posté : 03 nov. 2005, 14:21
par sadeq
exact,
zeus +1

Exemple :
<?
exec("nslookup qrc29-1.dslg.proxad.net",$array_out);
echo "<h3>Réponse nslookup qrc29-1.dslg.proxad.net</h3>";
if ($array_out != null) 
	foreach ($array_out as $out) echo "<p>$out";
else echo "<p>Rien";
?>

Posté : 03 nov. 2005, 19:07
par Invité
Merci beaucoup, ca marche, j'ai utilisé ton script sadeq, par contre ca affiche ca:
Réponse nslookup 213.228.37.195

Serveur : bewan

Address: 192.168.0.1

Nom : qrc29-1.dslg.proxad.net

Address: 213.228.37.195

comment ne pas afficher ca: Serveur : bewan

Address: 192.168.0.1 (c'est mon routeur)

Posté : 03 nov. 2005, 21:30
par websat
J'ai un autre petit probleme, j'ai ca:

Code : Tout sélectionner

<? exec("nslookup 213.228.37.132",$array_out); echo "<u>Nslookup BRC29-1 - Brest Centre:</u>"; if ($array_out != null) foreach ($array_out as $out) echo "<p>$out"; else echo "<p>Rien"; exec("nslookup 213.228.37.130",$array_out); echo "<u>Nslookup BRE29-1 - Brest Est:</u>"; if ($array_out != null) foreach ($array_out as $out) echo "<p>$out"; else echo "<p>Rien"; ?>
Ca marche mais ca affiche:

Code : Tout sélectionner

Nslookup BRC29-1 - Brest Centre: Serveur : bewan Address: 192.168.0.1 Nom : brc29-1.dslg.proxad.net Address: 213.228.37.132 Nslookup BRE29-1 - Brest Est: Serveur : bewan Address: 192.168.0.1 Nom : brc29-1.dslg.proxad.net Address: 213.228.37.132 Serveur : bewan Address: 192.168.0.1 Nom : bre29-1.dslg.proxad.net Address: 213.228.37.130
ca affiche Serveur : bewan

Address: 192.168.0.1

Nom : brc29-1.dslg.proxad.net

Address: 213.228.37.132 en trop, pourquoi ????

Posté : 04 nov. 2005, 09:42
par sadeq
Explication:
Il y a repétition de l'ip : 213.228.37.132 car le tableau $array_out n'est pas vidé avant de lancer le second nslookup.

Pour corriger, ajoute le code : $array_out = null; avant de lancer le second exec.

Posté : 04 nov. 2005, 09:57
par websat
merci, ca marche...