仪器的麻烦 - 带有记录和错误检查的影子副本脚本



我正在尝试开发一个用shadowcopy.exe创建备份的VBS脚本,并将它们用RSYNC复制到特定的目的地。有一些日志文件将通过同一脚本为Rsync复制过程创建并获取检查了特定单词(例如"错误"或"失败")。

我现在遇到的问题是我不知道如何检查日志文件/读取特定关键字。

我读到InStr是解决问题的可能性,但是我不知道如何使用它来定义我的关键字,将其读取并将其与我的邮件警报结合在一起。也许有人对我有建议?

到目前为止我的代码:

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 = "example@example.de"
authpass = "123"
smtpserver = "server" 
recipient = "example@example.de"
sender = "rsync@test.de"
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}!\.rootcimv2")
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:usersexampledesktopvbsrsyncbinvss1.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

使用 Option Explicit避免

之类的失误
ergenbis = instr(1, vss1, error, 1)
if Ergebnis <> 0 then  'Email verschicken das alles durchgelaufen ist

考虑名称(变量,文件)和内容(变量,文件)之间的差异。

编写一个简单的测试脚本,该脚本将instr()应用于文件/文件的每一行

相关内容

  • 没有找到相关文章

最新更新