France Hardware : Forums de discussion
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
22 743 membres enregistrés - 1 887 670 posts - 96 550 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           Langages Web
                [PHP] Commandes systemes
29 connectés(record : 207 le 05 juin 2007 - 05 h 23)

Vous devez vous connecter pour répondre au topic.
[PHP] Commandes systemes

jb69
En informatique..... Restez ZEN !

Messages : 636
Inscrit le 18/10/04
Ville : Lyon
Non connecté
  Posté le 01 février 2005 - 11 h 13 m 38 s
Salut,

Je cherche a faire une page de supervision réseau en php , le but etant de faire un tableau avec une liste de serveur , une des colone est nomé "Etat" et lorsque le serveur repond il est indiqué En ligne, dans le cas contraire : Hors ligne.

Pour ce faire j'ai pensé a un script php qui, au chargement de la page, va faire une serie de ping sur les serveurs, et renvoyé un code (1 si le serveur repond, 0 s'il ne reponds pas).

Ce que je n'arrive pas a faire c'est de creer ce script, j'arrive a faire un ping :

<?php

$resultatcmd = system('ping 192.168.1.1');
echo $resultatcmd;

?>

On a un résultat de ping comme dans la ligne de commande, mais tout desordonné (il n'y as pas les retour a la ligne) c'est relativement genant.

Mais de plus comment faire pour mettre une variable $etat a 1 ou 0 selon le resultat de la commande ping.

Je ne trouve aucune info chez mon ami google :roll:



http://www.jb69.com

Woofy
Pour les bons tuyaux me demander

Messages : 26 213
Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
  Posté le 01 février 2005 - 14 h 43 m 36 s
Extrait de man ping :


EXIT STATUS
ping returns 0 on success (the host is alive), and non-zero if the argu-
ments are incorrect or the host is not responding.


Tu ne peut pas recuperer la valeur de retour de ping?
Ou alors sinon le faire en shellscript?



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


gege38
Modérateur
Chief of the
(¯`·.__[T3aM.BouL3T©]__.·´¯)
Potatoe Reloaded

Messages : 14 097
Inscrit le 05/02/03
Ville : Domène
Non connecté
  Posté le 01 février 2005 - 14 h 46 m 44 s
Et avec une CGI ?



" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld


jb69
En informatique..... Restez ZEN !

Messages : 636
Inscrit le 18/10/04
Ville : Lyon
Non connecté
  Posté le 01 février 2005 - 14 h 56 m 05 s
Man Ping c'est bien mais la je suis sous windows :roll:

et je cherche un truc qui marcherai aussi bien avec une commande shell linux que windows !!!



http://www.jb69.com

Woofy
Pour les bons tuyaux me demander

Messages : 26 213
Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
  Posté le 01 février 2005 - 15 h 01 m 27 s
Ouais je vois ca.
Ben man ping je crois que ca marche pas sous windows! :D
En fait, je ne sais pas si sous windows ping te renvoie 1 ou 0. Donc si c'est non, bah va falloir que tu te tape un script qui regarde si le retour est positif ou negatif (avec une regexp par exemple, vu que quand c'est bon c'est toujours de la meme forme, de meme lorsque le serveur est inactif).

EDIT : pis je te disais man ping, non pas pour que tu le regarde, mais pour te dire ou je l'ai trouve.
Je ne suis pas du genre a demander si tu a regarde sur google avant de poster, et si tu n'a pas trouve si tu a cherche encore.


Message édité 1 fois, la dernière par Woofy le 01 février 2005 - 15 h 02.

:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


beavis
I hate the teletubbies...

Messages : 1 002
Inscrit le 18/09/03
Ville : Lyon 6e part-dieu
Non connecté
  Posté le 01 février 2005 - 16 h 30 m 20 s
mon ami google à trouvé ça : http://www.comscripts.com/scripts/php_php-ping_901.html
ça à l'être d'être pour windows...



www.bearstech.com

jb69
En informatique..... Restez ZEN !

Messages : 636
Inscrit le 18/10/04
Ville : Lyon
Non connecté
  Posté le 01 février 2005 - 16 h 36 m 45 s
Justement je veux tout faire en php

alors avec ceci :



<?php

$ping = system('ping www.google.fr');

echo $ping;

?>


J'optiens ca dans internet explorer :



Envoi d'une requˆte 'ping' sur www.google.akadns.net [216.239.59.99] avec 32 octets de donn‚esÿ: R‚ponse de 216.239.59.99ÿ: octets=32 temps=51 ms TTL=235 R‚ponse de 216.239.59.99ÿ: octets=32 temps=47 ms TTL=235 R‚ponse de 216.239.59.99ÿ: octets=32 temps=47 ms TTL=235 R‚ponse de 216.239.59.99ÿ: octets=32 temps=45 ms TTL=235 Statistiques Ping pour 216.239.59.99: Paquetsÿ: envoy‚s = 4, re‡us = 4, perdus = 0 (perte 0%), Dur‚e approximative des boucles en millisecondes : Minimum = 45ms, Maximum = 51ms, Moyenne = 47ms Minimum = 45ms, Maximum = 51ms, Moyenne = 47ms


J'aimerai pour une autre utilisation optenir ceci :



Envoi d'une requête 'ping' sur www.google.akadns.net [216.239.59.99] avec 32 octets de données :

Réponse de 216.239.59.99 : octets=32 temps=47 ms TTL=235
Réponse de 216.239.59.99 : octets=32 temps=45 ms TTL=235
Réponse de 216.239.59.99 : octets=32 temps=45 ms TTL=235
Réponse de 216.239.59.99 : octets=32 temps=45 ms TTL=235

Statistiques Ping pour 216.239.59.99:
Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%),
Durée approximative des boucles en millisecondes :
Minimum = 45ms, Maximum = 47ms, Moyenne = 45ms

C'est deja plus lisible :)

Comment faire ???

Et pour mon pb, comment a partir de ceci definir une variable $ping_server_resultat à 1 s'il y a réponse et à 0 si pas de réponse...

merci d'avance



http://www.jb69.com

jb69
En informatique..... Restez ZEN !

Messages : 636
Inscrit le 18/10/04
Ville : Lyon
Non connecté
  Posté le 01 février 2005 - 16 h 43 m 23 s


Le 01 février 2005 - 16 h 30, beavis a écrit :
mon ami google à trouvé ça : http://www.comscripts.com/scripts/php_php-ping_901.html
ça à l'être d'être pour windows...


Deja testé !
Ce n'est pas un vrai PING mais pluto une connexion socket (sur un port donné) par exemple pour un serveur web on fera une connexion sur 192.168.1.1 port 80 si le serveur a l'adresse 192.168.1.1.
Le resultat (0 ou 1) est renvoyé dans une variable/

Ca marche et c'est pratique pour verifier qu'un service tourne bien sur un serveur, mais si le service apache est arreté ma page m'indiquera que mon serveur est hors ligne alors qu'il est allumé et fonctionnel sur le réseau.
De plus avec les firewall les requetes vers les ports sont fermé.

Moi je cherche a faire un vrai ping ICMP, voila pourquoi j'ai eu l'idée d'utiliser la fonction system de php pour lancer un ping en ligne de commande et recuperer le résultat.

PS: la fonction system va me servir a beaucoup d'autre chose si je sais la maitriser et maitriser les resultat renvoyé et c'est la dessus que j'ai besoin d'aide.

Merci quand meme :)



http://www.jb69.com

beavis
I hate the teletubbies...

Messages : 1 002
Inscrit le 18/09/03
Ville : Lyon 6e part-dieu
Non connecté
  Posté le 01 février 2005 - 16 h 48 m 17 s
La doc de php dit ça :


system() retourne la dernière ligne du retour, en cas de succès, et FALSE en cas d'échec.
Si vous devez exécuter une commande et récupérer tout le résultat sans aucune intervention, utilisez la fonction passthru().



www.bearstech.com

Sn@ke
Admin. Métaforum
(¯`·.__[T3aM.St4rG4t3]__.·´¯)

Messages : 11 741
Inscrit le 07/11/01
Ville : Lyon/Grenoble
Non connecté
  Posté le 08 février 2005 - 19 h 06 m 42 s
l'ICMP n'est pas possible en PHP, dc faut forcément apsser par exec, system ou passthru... c'est sal, pas optimisé et peu sécurisé mais bon :D



Je ne connais pas la moitié d'entre vous à moitié autant que je le voudrais; et j'aime moins que la moitié d'entre vous à moitié aussi bien que vous le méritez

jb69
En informatique..... Restez ZEN !

Messages : 636
Inscrit le 18/10/04
Ville : Lyon
Non connecté
  Posté le 08 février 2005 - 22 h 10 m 14 s
Justement je cherche a utiliser la commande systeme, j'y arrive mais le probleme est de recuperer une variable a un etat 1 ou 0 selon la réponse ou non du ping



http://www.jb69.com

Sn@ke
Admin. Métaforum
(¯`·.__[T3aM.St4rG4t3]__.·´¯)

Messages : 11 741
Inscrit le 07/11/01
Ville : Lyon/Grenoble
Non connecté
  Posté le 08 février 2005 - 22 h 40 m 12 s
    Code     
1. 
2. /* Version Windows */
3. $ping = (strpos(shell_exec('ping -n 1 www.google.fr'),'reçus = 1')?1:0);
4. echo $ping; 
5. 
6. /* Version Linux / Unix */
7. $ping = (strpos(shell_exec('ping -c 1 www.google.fr'),'1 packets received')?1:0);
8. echo $ping; 
9. 


Message édité 8 fois, la dernière par Sn@ke le 08 février 2005 - 22 h 51.

Je ne connais pas la moitié d'entre vous à moitié autant que je le voudrais; et j'aime moins que la moitié d'entre vous à moitié aussi bien que vous le méritez

DeVice
Boulet occasionel...

Messages : 3 022
Inscrit le 12/03/03
Ville : Grenoble
Non connecté
  Posté le 08 février 2005 - 23 h 01 m 30 s
Y'as pas moyen de récuperer la valeur de retour d'une commande ? Ca serait moins "sale" comme tu dis :)

et, extrait de man ping :


RETURN VALUES
The ping command returns an exit status of zero if at least one response
was heard from the specified host; a status of two if the transmission
was successful but no responses were received; or another value (from
<sysexits.h>) if an error occurred.



Règle N°1 du forumeur : "Ta souris 7 fois autour du bouton poster tu tourneras, ainsi moins pour un âne de passer tu risqueras"

jb69
En informatique..... Restez ZEN !

Messages : 636
Inscrit le 18/10/04
Ville : Lyon
Non connecté
  Posté le 09 février 2005 - 07 h 18 m 42 s
merci Sn@ke !

je vais tester ça ! :tut:



http://www.jb69.com

Erel69
206
(¯`·.__[T3aM.L1b3rTe©]__.·´¯)

Messages : 19 449
Inscrit le 07/11/01
Ville : Lyon
Non connecté
  Posté le 09 février 2005 - 09 h 11 m 41 s


Le 08 février 2005 - 22 h 40, Sn@ke a écrit :
    Code     
1. /* Version Windows */
2. $ping = (strpos(shell_exec('ping -n 1 www.google.fr'),'reçus = 1')?1:0);
3. echo $ping; 



Le problème, c'est que ça fonctionne que pour un windows fr :P



Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...

DeVice
Boulet occasionel...

Messages : 3 022
Inscrit le 12/03/03
Ville : Grenoble
Non connecté
  Posté le 09 février 2005 - 09 h 56 m 25 s
Oh et je viens de voir que la solution de sn@ke ne "ping" qu'une fois. Vu que l'ICMP n'assure pas la transmission, un seul paquet perdu n'est pas completement anormal. Vaux mieux en faire 4 ou 5 au moins.



Règle N°1 du forumeur : "Ta souris 7 fois autour du bouton poster tu tourneras, ainsi moins pour un âne de passer tu risqueras"

Sn@ke
Admin. Métaforum
(¯`·.__[T3aM.St4rG4t3]__.·´¯)

Messages : 11 741
Inscrit le 07/11/01
Ville : Lyon/Grenoble
Non connecté
  Posté le 09 février 2005 - 13 h 07 m 08 s
tout depend de la fiablitié dont tu as besoin, vu qu'on en sait pas plus...



Je ne connais pas la moitié d'entre vous à moitié autant que je le voudrais; et j'aime moins que la moitié d'entre vous à moitié aussi bien que vous le méritez

Page genérée en 0.8750 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL |Actualité ADSL | e-commerce | Commande Au Volant
Creative Commons
Message Boards and Forums Directory