2017-12-09 16 views
0

shadowcopy.exe으로 백업을 생성하고 rsync를 사용하여 특정 대상에 복사하는 VBS 스크립트를 개발하려고합니다. 동일한 스크립트에서 rsync 복사 절차에 대해 생성되고 이 특정 단어 (예 : "오류"또는 "실패")를 확인하도록 로그 파일이 만들어집니다.로깅 및 오류 검사를 사용하는 InStr - 섀도 복사본 스크립트 관련 문제

내가 지금 가지고있는 문제는 로그 파일을 확인하는 방법/특정 키워드를 읽는 방법을 모른다는 것입니다.

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 = "[email protected]" 
authpass = "123" 
smtpserver = "server" 
recipient = "[email protected]" 
sender = "[email protected].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}!\\.\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 

답변

1

사용 Option Explicit 이름 (변수, 파일) 및 콘텐츠 (변수, 파일)의 차이에 대해 생각

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

같은 실수를 방지 할 수 있습니다.

파일의 각 줄/파일에 InStr()을 적용하는 간단한 테스트 스크립트를 작성하십시오.