Ich versuche ein VBS-Skript zu entwickeln, das Backups mit shadowcopy.exe
erstellt und sie mit rsync an ein bestimmtes Ziel kopiert. Es gibt Protokolldateien, die für die rsync-Kopierprozedur vom selben Skript erstellt werden und für bestimmte Wörter (wie "error" oder "failed") überprüft werden.Problem mit InStr - Shadow-Copy Script mit Protokollierung und Fehlerprüfung
Das Problem, das ich jetzt habe, ist, dass ich nicht weiß, wie man die Protokolldateien überprüft/die spezifischen Schlüsselwörter ausliest.
Ich lese, dass InStr
eine Möglichkeit ist, mein Problem zu lösen, aber ich weiß nicht, wie man es benutzt, um meine Schlüsselwörter zu definieren, sie herauszulesen und sie mit meinem Mailalarm zu kombinieren. Vielleicht hat jemand einen Rat für mich?
Mein Code so weit:
Dim oEmail, oConf
Dim authuser, authpass, smtpserver
Dim recipient,sender,subject,message
Dim ObjFso
Dim FIL_LOG
Dim response
'Angaben zur Quelle und Ziel
quelle = "c:\vshadow" 'beispiel c:\vshadow
ziel = "/cygdrive/c/users/example/desktop/test/" 'beispiel /cygdrive/c/users/example/desktop/test/
'angaben zu den emails die verschickt werden wollen
authuser = "[email protected]"
authpass = "123"
smtpserver = "server"
recipient = "[email protected]"
sender = "[email protected]"
subject = "Test E-Mail"
message1 = "Schattenkopie konnte nicht erstellt werden"
message2 = "rsync befehl ist durchgelaufen"
message3 = "rsync ist abgebrochen"
'für den email versand benötigte daten
Set oEmail = CreateObject("CDO.Message")
Set oConf = CreateObject("CDO.Configuration")
oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = smtpserver
oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = authuser
oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = authpass
oConf.Fields.Update
'Schattenkopie erstellen
Const CONTEXT = "ClientAccessible"
Set Args = WScript.Arguments
If Args.Count() > 0 Then
VOLUME = Args.item(0)
Else
VOLUME = "C:\"
End If
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objShadowStorage = objWMIService.Get("Win32_ShadowCopy")
errResult = objShadowStorage.Create(VOLUME, CONTEXT, strShadowID)
'falls schattenkopie nicht erstellt werden kann email mit Fehlermeldung, sonst gehts
'weiter
If errResult <> 0 Then
oEmail.Configuration = oConf
oEmail.To = recipient
oEmail.From = sender
oEmail.ReplyTo = sender
oEmail.Subject = subject
oEmail.HTMLBody = message1
End If
'Mounted die Schattenkopie und Kopiert per Rsync
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "%COMSPEC% /C ShadowSpawn.exe " & quelle & _
" t: rsync -rltDv --log-file=rsync.log--link-dest=/" & ziel & _
"/%last_run% /cygdrive/t/* " & ziel & _
" > c:\users\example\desktop\vbs\rsync\bin\vss1.log ", 0, True
'''''''''''''''''''''
'Hier möchte ich die gerade erstelle log Datei auf Stichwörter wie z.B error
'untersuchen. Falls error in der log datei vorhanden ist soll es mir eine Abbruch
'mail schicken. Ansonsten eine email das alles gut durchgelaufen ist
ergenbis = InStr(1, vss1, error, 1)
'If Ergebnis <> 0 Then 'Email verschicken das alles durchgelaufen ist
oEmail.Configuration = oConf
oEmail.To = recipient
oEmail.From = sender
oEmail.ReplyTo = sender
oEmail.Subject = subject
oEmail.HTMLBody = message2
Else 'abbruchmail verschicken
oEmail.Configuration = oConf
oEmail.To = recipient
oEmail.From = sender
oEmail.ReplyTo = sender
oEmail.Subject = subject
oEmail.HTMLBody = message3
End If
oEmail.Send
Set oConf = Nothing
Set oEmail = Nothing