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
| '==========================================================================
' repl_NTDS.vbs
'
' 2013/11/19
' Nicolas Provost
'
' TEST if ntds replication failed.
'
'==========================================================================
Dim oFSO, NtdsFail
Dim file_name, file_test
Dim oshell
Dim fso
Dim Lut, Lut_temp, Server, server_name, last_success_time
Dim converted_time, diff
Const ForReading = 1
'==============================================================
'== Génération du fichier CSV à analyser
'==============================================================
Set oshell = WScript.Createobject ("wscript.shell")
oshell.run "cmd.exe /c repadmin /showrepl /csv>c:\zabbix\repl_NTDS.csv" '<----------- Attention au répertoir que vous précisez
Set oShell = Nothing
Wscript.Sleep 3000 'Attente pour que le script se crée ( valeur en seconde )
Set oFSO = CreateObject("scripting.FilesystemObject")
Set NtdsFail = oFSO.OpenTextFile ("c:\zabbix\repl_NTDS.csv", ForReading) '<----------- Attention au répertoir que vous précisez
'==============================================================
'== test d'existance de fichier csv'
'==============================================================
'Set Object
'Set fso = CreateObject("Scripting.FileSystemObject")
'Create Condition
REM If (oFSO.FileExists("d:\Bureau\replNTDS.csv")) Then
REM 'Alert User
REM WScript.Echo("File exists!")
REM 'WScript.Quit()
REM Else
REM 'Alert User
REM WScript.Echo("File does not exist!")
REM 'Exit Script
REM WScript.Quit()
REM End If
'==============================================================
'== Fonction pour analyse CSV
'==============================================================
diff = 0
'Initialisation de la lecture du fichier CSV
Do While NtdsFail.AtEndOfStream <> True
Lut = NtdsFail.ReadLine
'Condition : si dans la ligne on tombe sur des guillemet on slip la ligne
If InStr(Lut, """") Then
Lut_temp = Split(Lut, """")
'On reprend cette nouvelle ligne a partir de la position 2 pour respliter si on tombe sur des virgules.
Server = Split (Lut_temp(2), ",")
server_name = Server(2) 'le serveur sera donc en position 2
last_success_time = Server(6) 'la date de la dernière bonne réplication sera donc en position 6
else
'Sinon On split directement sur les virgules
Server = Split (Lut, ",")
server_name = Server(5) 'le serveur sera donc en position5
last_success_time = Server(9) 'la date de la dernière bonne réplication sera donc en position 9
end if
REM Wscript.Echo "server_name: "+server_name
If server_name = "ADtestDC" Then 'Condition : si la variable à pour valeur le nom de serveur voulu alors
REM Wscript.Echo "server found, last success time: "+last_success_time
converted_time = CDate(last_success_time) 'On converti le temps de la derniére bonne réplication
diff = Datediff("n", converted_time, Now()) 'Puis on compare la différence de temps entre la réplication est maintenant, différence calculé en minute. On enregistrant le résultat dans une variable.
REM Wscript.Echo "last success time: " & last_success_time & vblf & "Now: " & Now() &vblf & "converted_time: " & converted_time &vblf & "DateDiff: " & diff
Exit Do 'On arrete la boucle
End If
Loop
NtdsFail.Close
Set NtdsFail = Nothing
Set oFSO = Nothing
'==============================================================
'== Code retourné pour l'utilisation de ZABBIX
'==============================================================
If diff > 120 then 'Condition : Si la difference et supérieur à 120 MIN par exemple alors
X = 1 'La variable X passe a 1 Déclenchant une alerte(utiliser par Zabbix)
REM Msgbox "Pas Bon, la replication est plus vieille que 2h"
Else
REM Msgbox "Bon"
X = 0 'Sinon la variable X reste a 0 aucun déclanchement.
End If
Wscript.Echo X |
Partager