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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
| '*** Définition des variables globale ***
Titre = "Ping de postes à distance @ Developpez.com"
Const ForReading = 1, ForWriting = 8
Public StrComputer, onlinestate, Fichier_log, WSHShell, Fichier_tmp, msg()
Dim oFSO, oFl, ecr, lect, ComputerName
Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set WSHNetwork = CreateObject("WScript.Network")
' *** Définition des variables d'environnement ***
Liste_pc = "LISTE_PC.txt"
Fichier_tmp = "LISTE_TMP.txt"
Fichier_log = "RAPPORT_PING.txt"
' *** Définition des variables locales ***
Redim msg(7)
msg(0) = "__________________________________________"
msg(1) = "Liste des postes introuvable " & dblquote(Liste_pc)
msg(2) = "Aucun poste dans la liste " & dblquote(Liste_pc)
msg(3) = "Début du script : "
msg(4) = "Script interrompu : "
msg(5) = "Fin du script : "
msg(6) = " : Poste inaccessible"
msg(7) = " : Accessible"
' *** Début du Script ***
' Test Fichier_Log existe
If Not oFSO.FileExists(Fichier_log) Then oFSO.CreateTextFile(Fichier_log)
Date_Heure = now
Set ecr = oFSO.OpenTextFile(Fichier_log, ForWriting) : ecr.Write msg(3) & Date_Heure & VbCrLf & VbCrLf : ecr.Close
' Test Liste_Pc existe
If Not oFSO.FileExists(Liste_Pc) Then
Set ecr = oFSO.OpenTextFile(Fichier_log, ForWriting) : ecr.Write msg(1) & VbCrLf : ecr.Close : Call fin_Prog : WScript.Quit
End If
' Test Liste_Pc non vide
Set oFl = oFSO.GetFile(Liste_Pc)
If oFl.Size = 0 Then
Set ecr = oFSO.OpenTextFile(Fichier_log, ForWriting) : ecr.Write msg(2) & VbCrLf : ecr.Close : Call fin_Prog : WScript.Quit
End If
' Création Fichier_tmp
if oFSO.FileExists(Fichier_tmp) Then oFSO.DeleteFile Fichier_tmp, True
oFSO.CreateTextFile(Fichier_tmp)
' Correction de Liste_Pc en Fichier_tmp
date_heure = now
Set lect = oFSO.OpenTextFile(Liste_Pc, ForReading)
Set ecr = oFSO.OpenTextFile(Fichier_tmp, ForWriting)
While Not lect.AtEndOfStream
Texte = lect.ReadLine
Texte = Trim(Texte)
prem_car = lcase(left(Texte,1))
if ( Len(Texte) > 0 ) and InStr("'", prem_car) = 0 Then
ecr.Writeline Texte
End if
Wend
lect.Close
ecr.Close
' Test Fichier_tmp non vide
Set oFl = oFSO.GetFile(Fichier_tmp)
If oFl.Size = 0 Then
Set ecr = oFSO.OpenTextFile(Fichier_log, ForWriting) : ecr.Write msg(2) & VbCrLf : ecr.Close : Call fin_Prog : WScript.Quit
End If
' Lecture du Fichier_tmp
Set lect = oFSO.OpenTextFile(Fichier_tmp, ForReading)
st = lect.ReadAll
ComputerName = Split(st, vbCrLf)
lect.Close
For i = lbound(ComputerName) to ubound(ComputerName) -1
strComputer = ComputerName(i)
Call Online
If onlinestate = 0 Then
Set ecr = oFSO.OpenTextFile(Fichier_log, ForWriting) : ecr.Write ComputerName(i) & msg(6) & VbCrLf : ecr.Close
Else
Set ecr = oFSO.OpenTextFile(Fichier_log, ForWriting) : ecr.Write ComputerName(i) & msg(7) & VbCrLf : ecr.Close
End if
Next
' *** Fin du script
Date_Heure = now
Set ecr = oFSO.OpenTextFile(Fichier_log, ForWriting) : ecr.Write VbNewLine & msg(5) & Date_Heure & VbCrLf & msg(0) & VbCrLf : ecr.Close
if oFSO.FileExists(Fichier_tmp) Then oFSO.DeleteFile Fichier_tmp, True
WSHShell.Run ("Notepad.exe " & Fichier_log)
WScript.Quit
' *** Sous-Fonction Fin programme
Sub fin_prog
Date_Heure = now
Set ecr = oFSO.OpenTextFile(Fichier_log, ForWriting) : ecr.Write VbNewLine & msg(4) & Date_Heure & VbCrLf & msg(0) & VbCrLf : ecr.Close
if oFSO.FileExists(Fichier_tmp) Then oFSO.DeleteFile Fichier_tmp, True
WSHShell.Run ("Notepad.exe " & Fichier_log)
End Sub
' *** Sous-Fonction Ping
Sub online
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("select * from Win32_PingStatus where address = '" & StrComputer & "'")
For Each objStatus in objPing
If objStatus.Statuscode = 0 Then onlinestate = 1 else onlinestate = 0
Next
End Sub
' *** Fonction Guillemets
Function dblquote(strIn)
dblquote = Chr(34) & strIn & Chr(34)
End Function |
Partager