Script php nslookup

Petit nouveau ! | 4 Messages

28 oct. 2005, 10:23

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 oct. 2005, 11:34

Est-ce que la fonction exec pourrait te convenir ?

Lit bien tout sur les valeurs de retour ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

03 nov. 2005, 13:40

La fonction exec me convient, mais comment faire apres ?
merci

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

03 nov. 2005, 14:06

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
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 nov. 2005, 14:13

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

03 nov. 2005, 14:21

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";
?>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Invité
Invité n'ayant pas de compte PHPfrance

03 nov. 2005, 19:07

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)

Petit nouveau ! | 4 Messages

03 nov. 2005, 21:30

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

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

04 nov. 2005, 09:42

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.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Petit nouveau ! | 4 Messages

04 nov. 2005, 09:57

merci, ca marche...