Recuperer le resultat d'un ping en vbs

Résolu
lixel Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -  
lixel Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous et à toutes,

j'ai ce programme vbs qui permet de faire un ping d'une plage d'adresse IP
dim i

for i = 0 to 255
Set wshell = CreateObject("WScript.Shell")
wshell.Run "ping -n 1 169.254.55." & i
wscript.echo i
next

Je souhaiterai récuperer les adresses IP des hotes connectés dans des variables et ensuite copier ces variables dans un fichier texte.

Merci pour vos reponses.

Cordialement



5 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
1
lixel Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
Merci, je vais regarder attentivement.
0
lixel Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,

Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject")

Set objShell = Wscript.CreateObject("Wscript.Shell")

objName = objFSO.GetTempName

objTempFile = objName

objShell.Run "cmd /c ping -n 3 -w 1000 19.254.55.246 >" & objTempFile, 0, True

Set objTextFile = objFSO.OpenTextFile(objTempFile, 1)

Do While objTextFile.AtEndOfStream <> True

strText = objTextFile.ReadLine

If Instr(strText, "Reply") > 0 Then

Wscript.Echo "Reply received."

Exit Do

End If

Loop

Le code suivant permet de faire un ping mais je n'arrive pas à avoir le resultat dans la fenetre WSH, mais si j'ouvre le fichier .tmp, je peux voir le resultat du ping.

En revanche si je modifie le code afin de faire un ping sur plusieur adresse, le fichier .tmp n'affiche que le resultat du dernier ping...

Voila ce que j'ai dans le fichier .tmp :
Envoi d'une requ^te 'Ping' 169.254.55.246 avec 32 octets de donn'esÿ:
R,ponse de 169.254.55.246ÿ: octets=32 temps<1ms TTL=128
R,ponse de 169.254.55.246ÿ: octets=32 temps<1ms TTL=128

J'ai essayé de modifier la ligne "If Instr(strText, "Reply") > 0 Then" par "If Instr(strText, "R,ponse") > 0 Then"

Mais cela n'a rien donné...
0
Yoda
 
Au premier appel
objShell.Run "cmd /c ping -n 3 -w 1000 19.254.55.246 >" & objTempFile, 0, True

Pour les appels suivants
objShell.Run "cmd /c ping -n 3 -w 1000 19.254.55.246 >>" & objTempFile, 0, True

le symbole > redirige les sorties console vers le fichier objTempFile en ecrasant le contenu
le symbole >> redirige les sorties console vers le fichier objTempFile en ajoutant à la fin.
0
lixel Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
Ok merci à vous!

et pour le fait que la condition If Instr(strText, "Reply") > 0 Then n'est jamais vrai vous avez une idée?
0
Yoda
 
Instr(strText, "Reply")

Cette fonction recherche dans la variable strText la positon de la sous-chaine "Reply" et retourne la position du premier caractère. Si c'est positif alors la sous-chaine est trouvée.

Dans ton cas la sous-chaine serait "Réponse" et non "R,ponse", bien respecter l'orthographe.

Set objTextFile = objFSO.OpenTextFile(objTempFile, 1)
Do While objTextFile.AtEndOfStream <> True
strText = objTextFile.ReadLine
If Instr(strText, "Réponse") > 0 Then
Wscript.Echo "Reply received."
End If
Exit Do

Mais pour toi qui fait des ping en serie, cette partie est inutile et doit être supprimée.

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lixel Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
 
Oui c'est vrai c'est inutile pour ce que je veut faire mais... j'aime bien savoir.

Et j'ai remplacé "Reply" par "réponse" et ca ne fonctionne pas non plus c'est pour cela que j'avais mit "R,ponse" car quand j'ouvre le fichier .tmp c'est ce qu'il me mettait. J'ai changer par "TTL=" et la ca fonctionne correctement. COOL!!

Merci pour votre aide.

A+
0