Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2900 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Faire un Ping et l'exploiter

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Faire un Ping et l'exploiter

n°1255350
PeEtreDieu
Posté le 29-11-2005 à 15:09:13  profilanswer
 

Salut à Tous J'essaye d'effectuer un PING sur des Machines et d'exploite le resultat pour contniuer mon programme ou marque dans un fichier texte si le poste est eteint  
probleme je n'arrive pas a recuperer le resultat et l'exploité ( en VBS )
 
'verification de la connection au poste'
 
function PingCheck
set WshShell = CreateObject ("Wscript.shell" )
PING = WshShell.Run ("Ping.exe POTES" & 0,TRUE)
if PING = 0 then call WriteOPOFF end if
End function
 
function writeOPOFF
set WshShell = CreateObject ("Wscript.shell" )
Set f = fso.GetFile(OPOFF)
Set ts = f.OpenAsTextStream(8, -2)
ts.Write TARGET
ts.close
End Function

mood
Publicité
Posté le 29-11-2005 à 15:09:13  profilanswer
 

n°1255368
madmartiga​n
Desperate Houseman
Posté le 29-11-2005 à 15:31:45  profilanswer
 

PeEtreDieu a écrit :

Salut à Tous J'essaye d'effectuer un PING sur des Machines et d'exploite le resultat pour contniuer mon programme ou marque dans un fichier texte si le poste est eteint  
probleme je n'arrive pas a recuperer le resultat et l'exploité ( en VBS )


Salut  :hello:  
 
J'ai l'impression que c'est une simple erreure de syntaxe :
 
Si je reduis ton code à ceci
 

set WshShell = CreateObject ("Wscript.shell" )
PING = WshShell.Run("Ping.exe POTES", 0,TRUE)
Msgbox "Resultat du PING " & PING


Ca marche tres bien, la MsgBox affiche 1 pour une adresse invalide, 0 pour une adresse ayant répondu.
 
il y avait juste le & a remplacer par ,
 
La syntaxe de Run est :

object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])


---------------
Mieux vaut fermer sa gueule et passer pour un con, plutot que de l'ouvrir, et montrer qu'on l'est...
n°1255827
PeEtreDieu
Posté le 30-11-2005 à 10:08:24  profilanswer
 

Merci  
Trop bete une si petite fautes lol
merci

n°1255849
PeEtreDieu
Posté le 30-11-2005 à 10:19:10  profilanswer
 

En faites sa ne marche pas
il me renvoie toujour un 1
je comprends pas !!!!

n°1255910
madmartiga​n
Desperate Houseman
Posté le 30-11-2005 à 11:30:46  profilanswer
 

PeEtreDieu a écrit :

En faites sa ne marche pas
il me renvoie toujour un 1
je comprends pas !!!!


J'ai vérifié, le script que je t'ai donné fonctionne bien sur un W2K.
Fais un test en remplaçant le nom POTES par une @ IP histoire d'être sur que tu n'as pas un pb de résolution de nom, par ex :

PING = WshShell.Run("Ping.exe 127.0.0.1", 0,TRUE)


Essaie avec un bête copier coller de mon script, ça isolera une éventuelle coquille oubliée quelque part.


---------------
Mieux vaut fermer sa gueule et passer pour un con, plutot que de l'ouvrir, et montrer qu'on l'est...
n°1256004
PeEtreDieu
Posté le 30-11-2005 à 14:25:06  profilanswer
 

J'ai trouver en faites il ne faut pas que je la mette dans une fonction
si je retire la fonction cela marhe avec non
peut etre que je declare mal  

n°1256029
PeEtreDieu
Posté le 30-11-2005 à 14:57:18  profilanswer
 

NON en faites le probleme vient de la variable je pe pas placer une variable entre " " sa ne marche pas alors coment faire je ne sais pas
 
a chaque fois il prend la valeur POTES
donc il fait un PING POTES
lol
c'est tt a fai se que je ve
mais il fau absolument qu'il ping et prennent la valeur de la variable et non le nom POTE

n°1256795
madmartiga​n
Desperate Houseman
Posté le 01-12-2005 à 13:54:11  profilanswer
 

Le problème c'est qu'en DOS la commande "ping" ne retourne pas une erreur si la machine ne répond pas. Par contre elle retourne une erreur si la résolution de nom échoue.
Fais un  

C:\ > ping 127.0.0.1
...  (on est sur que ça répond)
...
...
C:\ > echo %errorlevel%
0


maintenant, supposons que l'adresse 192.168.0.250 n'existe pas dans ton réseau

C:\ > ping 192.168.0.250
Request timed out
Request timed out
Request timed out
Request timed out
C:\ > echo %errorlevel%
0


La commande ping ne retourne en errorlevel que sa capacité à s'executer, non le resultat du ping
 
il faut donc trouver un subterfuge pour contourner le problème


---------------
Mieux vaut fermer sa gueule et passer pour un con, plutot que de l'ouvrir, et montrer qu'on l'est...
n°1256856
madmartiga​n
Desperate Houseman
Posté le 01-12-2005 à 14:33:13  profilanswer
 

L'astuce consiste à trouver dans les réposes retournées un mot clé permettant de déterminer si la machine pépond
 
il faut envisager les cas suivants :
la machine répond
la machine ne répond pas
la passerelle répond que l'hote est injoignable...
 
Cette dernière possibilité interdit de chercher le mot "Reply"
On peut donc chercher le mot "bytes=" qui n'apparait que dans le cas d'une réponse
La commande DOS a faire est donc :

ping.exe POTES | find /I "bytes="

ce qui pose un gros problème :
il faut passer en paramètre les caractères "guillemet" sans qu'ils soient interprétés. On passe alors leur code ASCI : 34
Deuxième problème : le caractère | n'est pas connu de schell.run. Il faut donc passer par un shell DOS pour pouvoir l'utiliser :
cmd /c ping.exe ... | find ...
 
Au final ça donne :
 

POTES="lluxstse6999"
  set WshShell = CreateObject ("Wscript.shell" )
  PINGIT="cmd /c ping.exe " & POTES & " | find /I " & CHR(34) & "bytes=" & CHR(34)
  PING = WshShell.Run(PINGIT,1,TRUE)
Msgbox "Resultat du Ping = " & PING


Je crois que là on est bon.  :hello:  


---------------
Mieux vaut fermer sa gueule et passer pour un con, plutot que de l'ouvrir, et montrer qu'on l'est...
n°1256900
PeEtreDieu
Posté le 01-12-2005 à 15:08:13  profilanswer
 

merci beaucoup


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Faire un Ping et l'exploiter

 

Sujets relatifs
EXtraire une valeur d'une requête SQL pour l'exploiter dans vba[VB] Exécution d'un ping et redirection vers un fichier log
[2000 server] Resultat de ping erroné[qst] envoyer signal port // après réponse negative à un ping
Repeter un ping toute les 15 secondes[basic]commande ping ?
[C/Linux] Gestion des interruptions [edit : exploiter le driver série]Ping python multithread
[PHP]Récupèrer une ressource d'un autre site et l'exploiter[Résolu] Exploiter 2 fois un résultat d'une requête
Plus de sujets relatifs à : Faire un Ping et l'exploiter


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)