Commande exec

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Commande exec

par Darkbibou » 13 avr. 2005, 15:48

Merci pour ton aide ouckileou =D>

Mon affichage se fait enfin correctement :D

Maintenant il faut que je fasse une boucle qui m'affichera "ping ok" si le ping fonctionne ou "ping impossible" si le delai d'attente est dépassé.

Mais je vai essayer de me débrouiller :P

](*,)

par flitox » 13 avr. 2005, 15:32

ou alors avec unset($out_ping) une fois l'affichage effectué
il n'y a pas plus clair, darkbibou, sur l'endroit où le mettre ;)

par Darkbibou » 13 avr. 2005, 15:30

A quel endroit faut que je place le unset ?? je comprends bas :roll:

par ouckileou » 13 avr. 2005, 15:20

c'est que le ping met ses infos bout à bout...

il te suffit de vider le tableau à chaque tour, en le récréant par exemple

$out_ping = new Array() ou Array() je ne sais plus exactement

ou alors avec unset($out_ping) une fois l'affichage effectué

essaye déjà ça

par Darkbibou » 13 avr. 2005, 15:16

le problème avec le for c'est que pour l'a première ip l'affichage du resultat ping est correct mais pour la deuxieme ip le resultat est double (resultat ip 1 puis resultat ip 2 d'affiché), et ainsi de suite

par ouckileou » 13 avr. 2005, 15:14

quel est le problème ? tu peux très bien mettre un for() dans un while
(à propos du for() que je t'ai donné, ce serait plutôt < et non <=count() )

donne plus de précisions sur ce qui se passe

par Darkbibou » 13 avr. 2005, 15:06

Voila mon code, l'affichage avec la boucle for pose problème car elle est à l'intérieur d'un while et je doit la laisser dedans car la valaeur de ping adresse est récupéré dedans, voici mon code:

<HTML>


<HEAD>

<TITLE> Affichage des données de la table gestion_machine </TITLE>

</HEAD>


<BODY>

<BR>
<H2 align="center">Voici la liste des machines répertoriées dans la base de données</H2>

<H3 align="center">Par ordre alphabétique</H3>
<BR>

<DIV align="center"><blockquote>Cliquez sur les l'adresse IP pour accéder à la page d'acceuil de l'imprimante ou pour prendre la main sur la machine !</blockquote>

<blockquote>Sinon cliquez sur le lien ci dessous pour accèder au formulaire de recherche :</blockquote>

<blockquote><A href="Recherche_Machine.html">Formulaire de recherche</A></blockquote></DIV>


<!-- Debut du script en php -->
<?
//connexion à la base de données:
$liendb=mysql_connect("localhost","root","")or die("la connexion à la base a échoué");
// selection de la base à remplir:
mysql_select_db("technique")or die("Impossible de se connecter à la base de données");
;

// requête de contrôle de l'affichage
$sql="SELECT * FROM gestion_machine ORDER BY Nom_machine";

$resultat=mysql_query($sql);
//$lgn=mysql_num_rows($resultat);
//$nbcol=mysql_num_fields($resultat);

/*affichage des données*/

echo"<TABLE border=1 align=center cellspacing=1>"; // creation du tableau d'affichage

while($affchamp = mysql_fetch_row($resultat))// creation d'une variable tableau qui stocke les données résultats de la recherche
{ // tant que $affchamp existe on fait:
echo"<TR>";
echo"<TD>".$affchamp[0]."</TD>"; //affiche la valeur du champ correspondant ici au nom de la machine
echo"<TD>".$affchamp[1]."</TD>"; // idem mais pour l'emplacement
echo"<TD>".$affchamp[2]."</TD>";
if ($affchamp[5]=="Imprimante"){ //Boucle de teste pour savoir quel est le type de l'appareil
$url2 = "http://"."$affchamp[3]"; // si c'est une imprimante on affiche son ip comme lien html
echo"<TD>"."<A href='".htmlentities($url2)."'>$affchamp[3]</A>"."</TD>";
}elseif ($affchamp[5]=="Ordinateur bureau"){
$url2 = "http://"."$affchamp[3]".":5800"; // si c'est un ordinateur on cree le lien html permettant de lancer VNC et de prendre la main
echo"<TD>"."<A href='".htmlentities($url2)."'>$affchamp[3]</A>"."</TD>";
}elseif ($affchamp[5]=="Ordinateur portable"){
$url2 = "http://"."$affchamp[3]".":5800";
echo"<TD>"."<A href='".htmlentities($url2)."'>$affchamp[3]</A>"."</TD>";
}elseif ($affchamp[5]=="Switch/Hub"){
$url2 = "http://"."$affchamp[3]".":5800";
echo"<TD>"."<A href='".htmlentities($url2)."'>$affchamp[3]</A>"."</TD>";
}else{
echo"<TD>".$affchamp[3]."</TD>"; // sinon on affiche juste l'IP
}
echo"<TD>".$affchamp[4]."</TD>";
echo"<TD>".$affchamp[5]."</TD>";
echo"<TD>".$affchamp[6]."</TD>";

// lancemenent d'un ping sur l'IP

echo"</TR>";

$adresse_ping= $affchamp[3];
echo "$adresse_ping --";

$ping_machine= exec("ping $adresse_ping",$out_ping);
//$ping_machine= exec('ping 194.214.236.246',$out_ping);
$taille_out= count($out_ping);
echo"$taille_out";

for ($i=0;$i<=count($out_ping);$i++) {
echo $out_ping[$i]."<br>";
}

} // fin du while/tant que

echo"</TABLE>";

// Fermeture de la base
mysql_close($liendb);

?>
<!-- fin du script en php -->

</BODY>

</HTML>

par Darkbibou » 13 avr. 2005, 14:56

Ah si pardon :S

Par contre j'ai pas encore réglé mon problème, je cherche a adapaté ton petit bout de code au reste de mon script en fait.

par Darkbibou » 13 avr. 2005, 14:51

count ne donne pas la taille du tableau je pense :cry:

par ouckileou » 13 avr. 2005, 14:44

ah bon bizarre

chez moi le code que j'ai copié/collé fonctionne très bien... :?:

par flitox » 13 avr. 2005, 14:42

<?php
$cible = "www.google.fr";
$ping_machine= exec("ping $cible",$out_ping);

for ($i=0;$i<=count($out_ping);$i++) {
    echo $out_ping[$i]."<br>";
} 
?>
ouckileou, c'est juste un problème de quotes. Avec les simples il ne trouve pas mais avec les double c'est ok

par ouckileou » 13 avr. 2005, 14:29

pour afficher le résultat complet du ping :
$adresse_ping = "www.google.fr";
$ping_machine= exec('ping '.$adresse_ping, $out_ping); 

for ($i=0;$i<=count($out_ping);$i++) {
	echo $out_ping[$i]."<br>";
}
?>

par Darkbibou » 13 avr. 2005, 14:28

dsl mais echo $ping_machine ne m'affiche strictement rien et de plus je voudrai afficher chaque ligne soit de $ping_machine ou du tableau de sortie (si je me trompe pas dans la syntaxe du exec) $out_ping.

par ouckileou » 13 avr. 2005, 14:20

echo $ping_machine
comme je l'ai mis, pour afficher plusieurs lignes voir dans les exemples de la doc

mais comment as-tu la réponse "hôte inconnu" si tu n'affiches rien ??

le fait est que chez moi, ceci ne fonctionne pas :
<?php
$cible = "www.google.fr";
$ping_machine= exec('ping $cible',$out_ping); 
echo $ping_machine;
?>
par contre comme ça ça fonctionne :
<?php
$cible = "www.google.fr";
$ping_machine= exec('ping '.$cible,$out_ping); 
echo $ping_machine;
?>
j'en déduis donc que ton problème vient de là ;)

par Darkbibou » 13 avr. 2005, 14:14

j'ai essayé mais le problème c'est que je ne sait pas comment afficher le résulat de cette ligne de commande :roll: