IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Historique dans un fichier texte


Sujet :

VBScript

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :


    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.

  2. #2
    Membre régulier Avatar de mikhailo
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 78
    Points : 75
    Points
    75
    Par défaut
    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

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    hummm, je ne vois pas trop ce que tu veux dire :

    Mon fichier est comme ca :

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

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

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 294
    Points : 3 544
    Points
    3 544
    Par défaut
    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 - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    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

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    Merci pour vos réponses, je vais ouvrir un autre sujet plus clair.

  6. #6
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    Ca devrait le faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    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 :

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

    Dans ma liste j'ai :

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

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

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

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

    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é.

  8. #8
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    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

  9. #9
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    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é.

  10. #10
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    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.

  11. #11
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    Une bouccle While ou For ?

    Do While objFile.AtEndOfStream

    Loop

    ou

    For

    Next

  12. #12
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    Le Do While fera parfaitement l'affaire.

    Et maintenant, le test pour savoir si on crée une nouvelle ligne ou pas !

  13. #13
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    je n'arrive pas à voir ou placer ma boucle et quoi comparer ... Boulet ...

  14. #14
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  15. #15
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  16. #16
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    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...

  17. #17
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    lol je regarde .... d'un coté ca m'enerve, mais de l'autre c'est ludique

  18. #18
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    je ne vois pas comment le placer au début du fichier ....

    et non ca ne marche pas

    Je lance une première liste :

    toto
    titi
    tata
    ca m'écrit bien :

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  19. #19
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  20. #20
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    ca ne fonctionne pas ...

    Ca écrase le contenu de mon fichier ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Creation d'un historique de pings dans un fichier texte
    Par snorky94 dans le forum VBScript
    Réponses: 2
    Dernier message: 06/12/2012, 17h49
  2. Realiser un système d'historique dans un fichier texte
    Par Taz_8626 dans le forum Langage
    Réponses: 19
    Dernier message: 27/03/2006, 15h35
  3. Réponses: 3
    Dernier message: 22/02/2004, 21h09
  4. [LG]rechercher dans un fichier texte
    Par BadFox dans le forum Langage
    Réponses: 11
    Dernier message: 01/12/2003, 16h57
  5. recherche de doublons dans un fichier texte
    Par portu dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 07/10/2003, 15h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo