Précédent   Forum du club des développeurs et IT Pro > Autres langages > Général Visual Basic 6 et VBScript > VBScript
VBScript Le forum d'entraide sur VBScript. Avant de poster -> La FAQ VBScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 29/11/2012, 11h38   #1
b.gaumard
Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2012
Messages : 166
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Finance

Informations forums :
Inscription : juillet 2012
Messages : 166
Points : 59
Points : 59
Par défaut Historique dans un fichier texte

Bonjour,

J'ai un petit problème tout simple

Chaque jour, j'execute un script qui fait un ping sur une liste de machine (toto, titi et tata) et qui ecrit le résultat OK ou NOK dans un fichier texte. Le but est de faire un historique sur 7 jours en incrémentant le fichier à chaque fois.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
Const ForReading = 1
Const ForWriting = 2 
Const ForAppending = 8
 
Set objFile = objFSO.OpenTextFile("Liste_Machines.txt", ForReading, True)
 
Set objRes = objFSO.OpenTextFile("Histo_ping.txt", ForAppending,True)
 
Do While objFile.AtEndOfStream <> True  
 
	Machine = objFile.ReadLine
 
	'objRes.WriteLine (Machine)
 
	Set WSHShell = CreateObject("WScript.Shell")
	Set WshExec = WshShell.Exec("ping -n 1 -w 200 " & Machine)
 
	PingResult = LCase(WshExec.StdOut.ReadAll)
	wscript.echo PingResult
 
	If InStr(PingResult, "octets=") Then
		'Ping OK
		objRes.WriteLine (Machine & " OK") 
	Else
		'Ping NOK
		objRes.WriteLine (Machine & " NOK")
	End If
 
 
Loop
Jusque la rien de compliqué ... ca enregistre les infos dans mon fichier texte de la facon suivante :


Citation:
toto OK
tata NOK
titi NOK
toto OK
tata NOK
titi NOK
Savez vous comment faire pour effecteur un enregistrement un ligne ?

Pour que chaque jour il incrémente avec la nouvelle valeur pour que ca donne :

--> nouveau jour

toto OK --> OK --> NOK
tata NOK --> NOK --> OK
titi NOK --> NOK --> OK

Si vous avez une idée je suis preneur...

Sinon je vais parser mon fichier en colonne et spliter

Merci d'avance.
b.gaumard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2012, 00h51   #2
mikhailo
Membre du Club
 
Avatar de mikhailo
 
Mikhail D.
Inscription : mars 2010
Messages : 78
Détails du profil
Informations personnelles :
Nom : Mikhail D.
Âge : 29

Informations forums :
Inscription : mars 2010
Messages : 78
Points : 59
Points : 59
La comme ca je dirais qu'il faut:
- Lire ton fichier en copiant les lignes "toto OK --> OK --> NOK" etc dans un tableau de taille = nombre de machines a pinger;
- Reecrire ton fichier a partir du tableau en ajoutant le resultat du ping au bout de la chaine de caracteres
__________________
"Les hommes et les femmes qui, sans bouger de leur bureau ou de leur bibliotheque, sans développer leur puissance corporelle et leurs infinies dimensions, parviennent, par une opération de la conscience, à une tristesse pessimiste qui se pretend lucide ne font que constater, sans le savoir, que toute identification du multiple de la vie à la vacuite de la conscience mène inévitablement à ce pessimisme et cette impuissance."

extrait de "La fragilité" de Benasayag
mikhailo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2012, 13h26   #3
b.gaumard
Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2012
Messages : 166
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Finance

Informations forums :
Inscription : juillet 2012
Messages : 166
Points : 59
Points : 59
hummm, je ne vois pas trop ce que tu veux dire :

Mon fichier est comme ca :

Citation:
toto OK
tata NOK
titi NOK
toto OK
tata NOK
titi NOK
Et je souhaiterai qu'il soit comme ca :

Citation:
toto OK --> OK --> NOK
tata NOK --> NOK --> OK
titi NOK --> NOK --> OK
b.gaumard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2012, 14h52   #4
omen999
Rédacteur
 
Avatar de omen999
 
Inscription : février 2006
Messages : 911
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 911
Points : 2 211
Points : 2 211
bonjour,
2 approches possibles :
1- si le fichier ne dépasse pas quelques centaines de ko, faire un ReadAll, splitter ligne par ligne, ajouter à la fin de chaque élément du tableau le résultat du ping de chaque machine, puis Join et sauvegarde en bloc du fichier en écrasant l'original.
2- soit le fichier commence à devenir joufflu, lire une ligne du fichier (ReadLine) y ajouter le résultat du ping de la 1er machine, écrire cette ligne dans un 2ème fichier temp (WriteLine), boucler cette opération jusqu'à la dernière machine, fermeture des fichiers, renommer le fichier temp en écrasant le fichier initial
__________________
nomen omen, nemo non omen
le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
pas de questions techniques par mp
omen999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2012, 14h56   #5
b.gaumard
Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2012
Messages : 166
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Finance

Informations forums :
Inscription : juillet 2012
Messages : 166
Points : 59
Points : 59
Merci pour vos réponses, je vais ouvrir un autre sujet plus clair.
b.gaumard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2012, 15h07   #6
Aniki
Membre émérite
 
Inscription : juin 2006
Messages : 632
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 632
Points : 926
Points : 926
Ca devrait le faire.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
 
Set objFile = objFSO.OpenTextFile("Liste_Machines.txt", ForReading, True)
 
If objFSO.FileExists("Histo_ping.txt") Then
	Set objRes = objFSO.OpenTextFile("Histo_ping.txt", ForReading, True)
	Histo = split(objRes.ReadAll, vbCrLf)
	objRes.Close
Else
	Dim Histo(1)
	'Histo(0) = ""
End If
 
 
Set objRes = objFSO.OpenTextFile("Histo_ping.txt", ForWriting, True)
 
i = 0
Do While objFile.AtEndOfStream <> True
 
	Machine = objFile.ReadLine
 
	'objRes.WriteLine (Machine)
 
	Set WSHShell = CreateObject("WScript.Shell")
	Set WshExec = WshShell.Exec("ping -n 1 -w 200 " & Machine)
 
	PingResult = LCase(WshExec.StdOut.ReadAll)
	wscript.echo PingResult
	if i <= UBound(Histo) And Histo(i) <> "" then
		If InStr(PingResult, "octets=") Then
			'Ping OK
			objRes.WriteLine (Histo(i) & " --> OK")
		Else
			'Ping NOK
			objRes.WriteLine (Histo(i) & " --> NOK")
		End If
	Else
		If InStr(PingResult, "octets=") Then
			'Ping OK
			objRes.WriteLine (Machine & " OK")
		Else
			'Ping NOK
			objRes.WriteLine (Machine & " NOK")
		End If
	End If
 
	i = i + 1
Loop
 
objFile.Close
objRes.Close
Edit: Grilled by Omen999.
C'est la mise en application de son approche 1
Et c'est du vite fait. Il y a surement des améliorations à faire...
Aniki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2012, 16h47   #7
b.gaumard
Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2012
Messages : 166
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Finance

Informations forums :
Inscription : juillet 2012
Messages : 166
Points : 59
Points : 59
Oups .....

Je n'avais pas vu ta réponse et j'ai ouvert un autre post plus clair ....

C'est top c'est exactement ce que je voulais merci !!!!

J'ai juste crée un tableau de 1000 lignes pour tester :

Citation:
Dim Histo(1000)
Ma liste de machines contient :
Citation:
toto
titi
tata
Cependant j'ai un comportement bizarre ...

Dans ma liste j'ai :

Citation:
toto
titi
tata
Je lance mon script 2 fois pour tester un historique et ca marche top.

Citation:
toto OK --> OK
titi NOK --> NOK
tata NOK --> NOK
Si maintenant je change le contenu de ma liste de machines et je met :

Citation:
terre
lune
mars
Le script ping bien les bonnes machines (terre, lune, mars)

Mais dans le fichier de log il m'affiche ca :

Citation:
toto OK --> OK --> NOK
titi NOK --> NOK --> NOK
tata NOK --> NOK --> NOK
Mon historique est bien incrémenté mais pas avec les bons noms de serveurs, etc.

Une idée svp ?

Je soupconne, mon tableau ou un truc du genre

Merci encore Aniki et omen999 pour votre aide car j'avais laissé tombé.
b.gaumard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 09h17   #8
Aniki
Membre émérite
 
Inscription : juin 2006
Messages : 632
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 632
Points : 926
Points : 926
Le script que je t'ai donné part du principe que ce sont toujours les même machines dans le même ordre qui sont pingées.
Si tu veux qu'il s'adapte aux nouvelles machines rencontrées, alors il faut effectivement faire quelques changements mais rien de bien méchant.
Cette fois je ne vais pas balancer le code prémaché car ce n'est pas le but du forum.
Mais je peux te donner des indices :
avant, on ne créait de nouvelles lignes que si le fichier historique n'existait pas.
Maintenant, il faut que tu changes ce comportement pour lui dire de créer une nouvelle ligne uniquement s'il découvre une nouvelle machine.
Ceci implique de vérifier à chaque fois si la machine pingée est déjà présente dans l'historique.

Essaie de te débrouiller avec ça et si tu coinces, reposte ici en nous donnant le code que tu as essayé.

Bon courage
Aniki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 11h14   #9
b.gaumard
Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2012
Messages : 166
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Finance

Informations forums :
Inscription : juillet 2012
Messages : 166
Points : 59
Points : 59
bonjour,

merci pour ta réponse, je ne vois pas trop comment faire ...

Il faut comparer les 2 fichiers texte : Histo_ping.txt et Liste_Machines.txt ?

Si nouvelle machine dans Liste_Machines.txt
alors ?

je ne vois pas trop désolé.
b.gaumard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 11h35   #10
Aniki
Membre émérite
 
Inscription : juin 2006
Messages : 632
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 632
Points : 926
Points : 926
Nouvel indice:

le test qui permettait de savoir si on écrivait une nouvelle ligne ou pas était:
if i <= UBound(Histo) And Histo(i) <> "" then.

maintenant on veut a chaque fois* lire le fichier histo et regarder si la machine qui vient d'être pingée est déjà présente dans l'historique ou pas.
Du coup, on va avoir besoin d'une boucle et de lire le fichier, jusqu'à se qu'on trouve la machine en question (pas de nouvelle ligne) ou que l'on tombe sur la fin du fichier (nouvelle ligne).


*on pourrait faire des optimisations si on savait par exemple que les nouvelles machines sont toujours ajoutées à la fin du fichiers machine ou bien que les fichiers sont triés, etc...
Mais ça viendra plus tard.
Aniki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 12h10   #11
b.gaumard
Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2012
Messages : 166
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Finance

Informations forums :
Inscription : juillet 2012
Messages : 166
Points : 59
Points : 59
Une bouccle While ou For ?

Do While objFile.AtEndOfStream

Loop

ou

For

Next
b.gaumard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 12h17   #12
Aniki
Membre émérite
 
Inscription : juin 2006
Messages : 632
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 632
Points : 926
Points : 926
Le Do While fera parfaitement l'affaire.

Et maintenant, le test pour savoir si on crée une nouvelle ligne ou pas !
Aniki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 12h44   #13
b.gaumard
Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2012
Messages : 166
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Finance

Informations forums :
Inscription : juillet 2012
Messages : 166
Points : 59
Points : 59
je n'arrive pas à voir ou placer ma boucle et quoi comparer ... Boulet ...
b.gaumard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 13h15   #14
Aniki
Membre émérite
 
Inscription : juin 2006
Messages : 632
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 632
Points : 926
Points : 926
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
 
Set objFile = objFSO.OpenTextFile("Liste_Machines.txt", ForReading, True)
 
If objFSO.FileExists("Histo_ping.txt") Then
	Set objRes = objFSO.OpenTextFile("Histo_ping.txt", ForReading, True)
	Histo = split(objRes.ReadAll, vbCrLf)
	objRes.Close
Else
	Dim Histo(1)
	'Histo(0) = ""
End If
 
 
Set objRes = objFSO.OpenTextFile("Histo_ping.txt", ForWriting, True)
 
i = 0
Trouve = Faux
Ligne = rien
Do While objFile.AtEndOfStream <> True
 
	Machine = objFile.ReadLine
 
	'objRes.WriteLine (Machine)
 
	Set WSHShell = CreateObject("WScript.Shell")
	Set WshExec = WshShell.Exec("ping -n 1 -w 200 " & Machine)
 
	PingResult = LCase(WshExec.StdOut.ReadAll)
	wscript.echo PingResult
	'if i <= UBound(Histo) And Histo(i) <> "" then
	placer objRes au début du fichier
	Tant que pas fin de fichier objRes Faire
		lire une ligne fichier objRes -> Ligne
		Si ligne = Machine Alors
			Trouve = Vrai
			Sortir de la boucle
		Fin Si
	Fin Tant que
 
	Si Trouve = Vrai Alors
		If InStr(PingResult, "octets=") Then
			'Ping OK
			objRes.WriteLine (Histo(i) & " --> OK")
		Else
			'Ping NOK
			objRes.WriteLine (Histo(i) & " --> NOK")
		End If
	Else
		If InStr(PingResult, "octets=") Then
			'Ping OK
			objRes.WriteLine (Machine & " OK")
		Else
			'Ping NOK
			objRes.WriteLine (Machine & " NOK")
		End If
	End If
 
	Trouve = Faux
	i = i + 1
Loop
 
objFile.Close
objRes.Close
Je te l'ai écrit en algo.
Implémente le code VB et reviens poster ton résultat.
Aniki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 14h15   #15
b.gaumard
Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2012
Messages : 166
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Finance

Informations forums :
Inscription : juillet 2012
Messages : 166
Points : 59
Points : 59
...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
 
Set objFile = objFSO.OpenTextFile("Liste_Machines.txt", ForReading, True)
 
If objFSO.FileExists("Histo_ping.txt") Then
	Set objRes = objFSO.OpenTextFile("Histo_ping.txt", ForReading, True)
	Histo = split(objRes.ReadAll, vbCrLf)
	objRes.Close
Else
	Dim Histo(1)
	'Histo(0) = ""
End If
 
 
Set objRes = objFSO.OpenTextFile("Histo_ping.txt", ForWriting, True)
 
i = 0
 
Trouve = False
Ligne = ""
 
Do While objFile.AtEndOfStream <> True
 
	Machine = objFile.ReadLine
 
	'objRes.WriteLine (Machine)
 
	Set WSHShell = CreateObject("WScript.Shell")
	Set WshExec = WshShell.Exec("ping -n 1 -w 200 " & Machine)
 
	PingResult = LCase(WshExec.StdOut.ReadAll)
	wscript.echo PingResult
	'if i <= UBound(Histo) And Histo(i) <> "" then
 
	Set objRes2 = objFSO.OpenTextFile("Histo_ping.txt", ForReading, True)
	Do While objRes2.AtEndOfStream <> True
		Ligne = objRes2.ReadLine
 
		If ligne = Machine Then
			Trouve = True
 
		Wscript.echo ligne
		Wscript.echo Machine
 
		End If	
	Loop
 
	If Trouve = True Then
			If InStr(PingResult, "octets=") Then
				'Ping OK
				objRes.WriteLine (Histo(i) & " --> OK")
			Else
				'Ping NOK
				objRes.WriteLine (Histo(i) & " --> NOK")
			End If
		Else
			If InStr(PingResult, "octets=") Then
				'Ping OK
				objRes.WriteLine (Machine & " OK")
			Else
				'Ping NOK
				objRes.WriteLine (Machine & " NOK")
			End If
	End If
 
 
	Trouve = False
	i = i + 1
Loop
 
objFile.Close
objRes.Close
b.gaumard est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/12/2012, 14h32   #16
Aniki
Membre émérite
 
Inscription : juin 2006
Messages : 632
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 632
Points : 926
Points : 926
Et ?
Ca marche ou pas ?

Pour le coup du placer objRes au début du fichier, je ne savais pas qu'en VBScript on ne pouvait pas revenir en arrière...
Du coup optimiser le code pour ne pas ouvrir et fermer le fichier en permanence devrait soulager énormément !

Conseils pour améliorer ton script :
il y a des ouvertures de fichier pas nécessaire à enlever et il faut aussi penser à fermer proprement les fichiers une fois qu'on les a ouvert.

On avance, on avance...
Aniki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 14h45   #17
b.gaumard
Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2012
Messages : 166
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Finance

Informations forums :
Inscription : juillet 2012
Messages : 166
Points : 59
Points : 59
lol je regarde .... d'un coté ca m'enerve, mais de l'autre c'est ludique
b.gaumard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 14h58   #18
b.gaumard
Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2012
Messages : 166
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Finance

Informations forums :
Inscription : juillet 2012
Messages : 166
Points : 59
Points : 59
je ne vois pas comment le placer au début du fichier ....

et non ca ne marche pas

Je lance une première liste :

Citation:
toto
titi
tata
ca m'écrit bien :

Citation:
toto --> OK
titi --> NOK
tata --> NOK
je lance une deuxieme liste :

Citation:
terre
lune
soleil
ca m'écrit bien à la suite :

Code :
1
2
3
4
5
6
toto --> OK
titi-->NOK
tata-->NOK
terre-->NOK
lune-->NOK
soleil-->NOK
Mais si je lance une 3 emem liste avec une nom qui existait deja ca écrit à la suite :

Code :
1
2
3
4
5
6
7
toto-->OK
titi-->NOK
tata-->NOK
terre-->NOK
lune-->NOK
soleil-->NOK
toto-->OK-->OK

Je chercherais plus tard pas grave, je ne vais pas te faire perdre ton temps et il faut que je finisse autre chose. cetait juste un plus ca ...


Merci bcp pour ton aide en tout cas.
b.gaumard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 15h09   #19
Aniki
Membre émérite
 
Inscription : juin 2006
Messages : 632
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 632
Points : 926
Points : 926
Normal que ca marche pas, il faut faire le ménage quand on lit la ligne de l'historique pour ne récupérer QUE le nom de la machine :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 
	Do While objRes2.AtEndOfStream <> True
		Ligne = objRes2.ReadLine
		Ligne = Left(Ligne, InStr(Ligne, " "))
 
		If Ligne = Machine Then
			Trouve = True
 
		Wscript.echo Ligne
		Wscript.echo Machine
 
		End If	
	Loop
Ca devrait marcher comme ça.

Après, on se penche sur l'optimisation !
Et non, tu ne t'y soustrairas pas...
Aniki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2012, 15h50   #20
b.gaumard
Membre du Club
 
Homme
Ingénieur systèmes et réseaux
Inscription : juillet 2012
Messages : 166
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Finance

Informations forums :
Inscription : juillet 2012
Messages : 166
Points : 59
Points : 59
ca ne fonctionne pas ...

Ca écrase le contenu de mon fichier ...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
 
Set objFile = objFSO.OpenTextFile("Liste_Machines.txt", ForReading, True)
 
If objFSO.FileExists("Histo_ping.txt") Then
	Set objRes = objFSO.OpenTextFile("Histo_ping.txt", ForReading, True)
	Histo = split(objRes.ReadAll, vbCrLf)
	objRes.Close
Else
	Dim Histo(1)
	'Histo(0) = ""
End If
 
 
Set objRes = objFSO.OpenTextFile("Histo_ping.txt", ForWriting, True)
 
i = 0
 
Trouve = False
Ligne = ""
 
Do While objFile.AtEndOfStream <> True
 
	Machine = objFile.ReadLine
 
	'objRes.WriteLine (Machine)
 
	Set WSHShell = CreateObject("WScript.Shell")
	Set WshExec = WshShell.Exec("ping -n 1 -w 200 " & Machine)
 
	PingResult = LCase(WshExec.StdOut.ReadAll)
	wscript.echo PingResult
	'if i <= UBound(Histo) And Histo(i) <> "" then
 
	Set objRes2 = objFSO.OpenTextFile("Histo_ping.txt", ForReading, True)
	Do While objRes2.AtEndOfStream <> True
		Ligne = objRes2.ReadLine
		Ligne = Left(Ligne, InStr(Ligne, " "))
 
		If Ligne = Machine Then
			Trouve = True
 
		Wscript.echo Ligne
		Wscript.echo Machine
 
		End If	
	Loop 
 
	If Trouve = True Then
			If InStr(PingResult, "octets=") Then
				'Ping OK
				objRes.WriteLine (Histo(i) & " --> OK")
			Else
				'Ping NOK
				objRes.WriteLine (Histo(i) & " --> NOK")
			End If
		Else
			If InStr(PingResult, "octets=") Then
				'Ping OK
				objRes.WriteLine (Machine & " OK")
			Else
				'Ping NOK
				objRes.WriteLine (Machine & " NOK")
			End If
	End If
 
 
	Trouve = False
	i = i + 1
Loop
 
objFile.Close
objRes.Close
b.gaumard est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h29.


 
 
 
 
Partenaires

Hébergement Web