Email versenden nach erfolgreicher Sicherung
Hallo Leute!
Ich sichere unseren Server täglich mit ntbackup. Ist es möglich, dass ich nach der Sicherung eine eMail versende? Grundsätzlich ist mir klar wie das funktionieren könnte, aber ich weiß nicht wie ich eine Batch Datei nach der Sicherung automatisch ausführe ... habt ihr da einen Denkanstoß?
Ich sichere unseren Server täglich mit ntbackup. Ist es möglich, dass ich nach der Sicherung eine eMail versende? Grundsätzlich ist mir klar wie das funktionieren könnte, aber ich weiß nicht wie ich eine Batch Datei nach der Sicherung automatisch ausführe ... habt ihr da einen Denkanstoß?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 18354
Url: https://administrator.de/contentid/18354
Ausgedruckt am: 23.11.2024 um 15:11 Uhr
14 Kommentare
Neuester Kommentar
Hallo,
ich würde die Sicherung bereits über eine Batch-Datei starten lassen (Kommandozeilenoptionen von ntbackup bekommst Du mit "ntbackup /?") und nach erfolgter Sicherung über ein spezielles Kommandozeilen Mailprogramm wie http://www.blat.net/ die Erfolgsmeldung oder auch Fehlermeldung senden.
Ob die Sicherung Erfolgreich war, kannst Du über die Variable %errorlevel% abfragen, denn hier speichert Windows (ab NT?) den letzten systemweit aufgetretenen Fehlercode). Ist diese Variable nicht 0, dann gab es wohl einen Fehler...
Wenn Du ntbackup mit "start /wait ntbackup.exe ..." startest, wird die Email auch wirklich erst dann verschickt, wenn ntbackup fertig ist.
Hoffe, das war Denkanstoß genug
Gruß,
Tim
ich würde die Sicherung bereits über eine Batch-Datei starten lassen (Kommandozeilenoptionen von ntbackup bekommst Du mit "ntbackup /?") und nach erfolgter Sicherung über ein spezielles Kommandozeilen Mailprogramm wie http://www.blat.net/ die Erfolgsmeldung oder auch Fehlermeldung senden.
Ob die Sicherung Erfolgreich war, kannst Du über die Variable %errorlevel% abfragen, denn hier speichert Windows (ab NT?) den letzten systemweit aufgetretenen Fehlercode). Ist diese Variable nicht 0, dann gab es wohl einen Fehler...
Wenn Du ntbackup mit "start /wait ntbackup.exe ..." startest, wird die Email auch wirklich erst dann verschickt, wenn ntbackup fertig ist.
Hoffe, das war Denkanstoß genug
Gruß,
Tim
Hallo,
Hier rufst Du ja ntbackup mit den nötigen Parametern schon als externes Programm auf. Dasselbe kannst Du auch mit Kommandozeilen-Mail-Clients wie dem oben genannte "Blat" machen.
Du kannst das ja gleich hier in die Abfrage nach dem Ergebnis der Sicherung einbauen, also:
Gruß,
Tim
Set objShell =
WScript.CreateObject("WScript.Shell")
Ergebnis = objShell.Run(Aufruf,10,True)
WScript.CreateObject("WScript.Shell")
Ergebnis = objShell.Run(Aufruf,10,True)
Hier rufst Du ja ntbackup mit den nötigen Parametern schon als externes Programm auf. Dasselbe kannst Du auch mit Kommandozeilen-Mail-Clients wie dem oben genannte "Blat" machen.
Select Case Ergebnis
Case 0
objShell.LogEvent 0, "Ergebniscode
der Sicherung ist: " & Ergebnis
Case Else
objShell.LogEvent 1, "Ergebniscode
der Sicherung ist: " & Ergebnis
End Select
Case 0
objShell.LogEvent 0, "Ergebniscode
der Sicherung ist: " & Ergebnis
Case Else
objShell.LogEvent 1, "Ergebniscode
der Sicherung ist: " & Ergebnis
End Select
Du kannst das ja gleich hier in die Abfrage nach dem Ergebnis der Sicherung einbauen, also:
Select Case Ergebnis
Case 0
objShell.LogEvent 0, "Ergebniscode der Sicherung ist: " & Ergebnis
<span style="color: #ff0000">objShell.Run("blat -<i>viele-viele-Parameter</i>") </span>
Case Else
objShell.LogEvent 1, "Ergebniscode der Sicherung ist: " & Ergebnis
<span style="color: #ff0000">objShell.Run("blat -<i>viele-viele-Parameter</i>") </span>
End Select
Gruß,
Tim
Hallo,
Aber fast richtig:
Datum = DatePart("d",Date) & "." & DatePart("m",Date) & "." & DatePart("yyyy",Date)
Dann kannst Du "Datum" als Variable benutzen.
Moment zwei Dinge!
1) true hat den Zahlenwert 1, false hat den Zahlenwert 0. Du sendest also die genau falschen Meldungen. Mach das anders herum.
2) Ergebnis = objShell.Run(Aufruf,10,True) liefert true (1) zurück, wenn der Aufruf von ntbackup erfolgreich war - und auch wenn Du ntbackup dann abbrichst, ändert sich daran nichts.
Wenn Du wissen willst, ob die Sicherung tatsächlich positiv abgeschlossen wurde, bringt das so meiner Meinung nach nichts. Wie man es aber in vbs hinbekommt, weiß ich gerade auch nicht: dafür sind meine vbs Kenntnisse zu minimal. Aber es gibt hier ja auch einen VBS Bereich, wo Du nochmal dahingehend nachfragen könntest.
Bei Batch hätte ich jetzt die Umgebungsvariable %errorlevel% abgefragt; wenn die ungleich 0 ist, gab es einen Fehler. Vielleicht kann man das aber auch per vbs abfragen oder es gibt hier sogar bessere Methoden.
Sorry!
Tim
Wenn ich so schreibe:
objShell.Run("blat sicherung.txt -s
sicherung_" & Date &
"_erfolgreich -to alex@dick.at")
objShell.Run("blat sicherung.txt -s
sicherung_" & Date &
"_erfolgreich -to alex@dick.at")
Aber fast richtig:
Datum = DatePart("d",Date) & "." & DatePart("m",Date) & "." & DatePart("yyyy",Date)
Dann kannst Du "Datum" als Variable benutzen.
?dit: Hab jetzt mal die Sicherung manuell
gestartet und sie danach abgebrochen. Nun
hat er mir komischerweise
"sicherung_erfolgreich" gemailt
anstatt fehlerhaft
gestartet und sie danach abgebrochen. Nun
hat er mir komischerweise
"sicherung_erfolgreich" gemailt
anstatt fehlerhaft
Moment zwei Dinge!
1) true hat den Zahlenwert 1, false hat den Zahlenwert 0. Du sendest also die genau falschen Meldungen. Mach das anders herum.
2) Ergebnis = objShell.Run(Aufruf,10,True) liefert true (1) zurück, wenn der Aufruf von ntbackup erfolgreich war - und auch wenn Du ntbackup dann abbrichst, ändert sich daran nichts.
Wenn Du wissen willst, ob die Sicherung tatsächlich positiv abgeschlossen wurde, bringt das so meiner Meinung nach nichts. Wie man es aber in vbs hinbekommt, weiß ich gerade auch nicht: dafür sind meine vbs Kenntnisse zu minimal. Aber es gibt hier ja auch einen VBS Bereich, wo Du nochmal dahingehend nachfragen könntest.
Bei Batch hätte ich jetzt die Umgebungsvariable %errorlevel% abgefragt; wenn die ungleich 0 ist, gab es einen Fehler. Vielleicht kann man das aber auch per vbs abfragen oder es gibt hier sogar bessere Methoden.
Sorry!
Tim
Moin alex86,
ich habe ein bisschen gezögert, ob ich zu diesem eigentlich abgeschlossenen Thread auch noch meinen Senf dazugeben soll. Mach ich nun aber doch.
Also - meine Gedanken beim Lesen des Threads waren natürlich:
Wozu denn hier *.vbs? Sind doch nur Aufrufe von NTBackup, ErrorLevel abprüfen und dann eine Zeile Blat-Mail. Keine bunten Messageboxen, alles silent, bestenfalls ein bisschen Loggerei. Also klassische Batch-Anwendung. Seh ich auch immer noch so.
Andererseits... wenn es läuft... never change a running system ...
and never run a changing system...
Also was solls... dann halt mit VBScript, egal...bin ja kein Fanatiker...
Nach der letzten Entwicklung allerdings - Wenn sich anscheinend nicht mal feststellen lässt, was denn nun der Errorlevel bzw. das Ergebnis der eigentlichen Sicherung war (das war doch das wesentliche Ziel ursprünglich, oder?), dann würde ich das doch via Batch abfackeln.
Selbst wenn ich da für die "saubere" Wochentagsermittlung wieder einen VBScript-Zweizeiler nutzen würde (den aus dem <a href= target="blank">Batch-Tut III<a>).
Ich würde hier also die GetAllDateTimeInfos.bat nutzen.
Falls also noch Interesse an einer Batch-Variante besteht:
HTH
Frank / der Biber aus Bremen
ich habe ein bisschen gezögert, ob ich zu diesem eigentlich abgeschlossenen Thread auch noch meinen Senf dazugeben soll. Mach ich nun aber doch.
Also - meine Gedanken beim Lesen des Threads waren natürlich:
Wozu denn hier *.vbs? Sind doch nur Aufrufe von NTBackup, ErrorLevel abprüfen und dann eine Zeile Blat-Mail. Keine bunten Messageboxen, alles silent, bestenfalls ein bisschen Loggerei. Also klassische Batch-Anwendung. Seh ich auch immer noch so.
Andererseits... wenn es läuft... never change a running system ...
and never run a changing system...
Also was solls... dann halt mit VBScript, egal...bin ja kein Fanatiker...
Nach der letzten Entwicklung allerdings - Wenn sich anscheinend nicht mal feststellen lässt, was denn nun der Errorlevel bzw. das Ergebnis der eigentlichen Sicherung war (das war doch das wesentliche Ziel ursprünglich, oder?), dann würde ich das doch via Batch abfackeln.
Selbst wenn ich da für die "saubere" Wochentagsermittlung wieder einen VBScript-Zweizeiler nutzen würde (den aus dem <a href= target="blank">Batch-Tut III<a>).
Ich würde hier also die GetAllDateTimeInfos.bat nutzen.
Falls also noch Interesse an einer Batch-Variante besteht:
::--- Kurzskizze der Sicherung als Batch---ungetestet--
@echo off & setlocal
Call GetAllDateTimeInfos /s /q
:: (alle Variablen sind gesetzt - ich brauche nur den %cDoW%.. cDayOfWeek)
Set Wochentag=%cDoW%
Call GetAllDateTimeInfos /u
ntbackup.exe backup systemstate @C:\sicherung_neu.bks /F D:\ "Sicherung_%Wochentag% /V:no /R:no /L:s /M normal"
IF ErrorLevel 4 goto NTBackupMemoryProb
IF ErrorLevel 2 goto NTBackupCanceledByUser
IF ErrorLevel 1 goto NTBackupFailed
::NoError
blat sicherung.txt -s sicherung_erfolgreich -to alex@dick.at
goto :eof
:NTBackupFailed
blat sicherung.txt -s sicherung_indieGruetze -to alex@dick.at
goto :eof
....
..
::--- Kurzskizze der Sicherung als Batch---ungetestet--
HTH
Frank / der Biber aus Bremen
Hallo,
wie ich in meinem allerersten Post ja auch schon vorgeschlagen habe, ist Batch wirklich die allereinfachste (und damit meist auch die beste) Lösung.
Zu Deiner letzten Frage:
blat -body "Mein Mailtext" ...
So muss man den Text der Mail nicht in eine Textdatei packen.
Siehe auch: http://www.blat.net/syntax/syntax.html
Gruß,
Tim
wie ich in meinem allerersten Post ja auch schon vorgeschlagen habe, ist Batch wirklich die allereinfachste (und damit meist auch die beste) Lösung.
Zu Deiner letzten Frage:
blat -body "Mein Mailtext" ...
So muss man den Text der Mail nicht in eine Textdatei packen.
Siehe auch: http://www.blat.net/syntax/syntax.html
Gruß,
Tim
Moin Alex,
hab grad bei M$ angerufen... die haben anscheinend meine GetAllDateTimeInfos.bat noch nicht standardmäßig mit ausgeliefert...
vermutlich verstehen die meinen Code wieder mal nicht in Redmond..
Na, ich deren Code auch nicht immer..
Du findest eine Copy&Paste-bare (welch eine Wortschöpfung!) Kopie in meinem Batch-Tutorial III ..siehe den Link oben. [Edit]...schon erledigt, hab ich zu spät gesehen. [/Edit]
Kopier Dir die irgendwohin in Deinen %path% oder gib den Pfad explizit an im Batch.
Sorry für die anderen Tippfehler..sollte nur eine Skizze sein.
Da sind nur die Anfü-Zeichen zuviel!! Das vor dem Wort 'Sicherung_....' und das am Ende
...F D:\ "Sicherung_%Wochentag% ...
Die ErrorLevel von NTBackup sind auch nur Beispiele... schau lieber in der NTBackup-Doku nach.
ErrorLevel 4 (oder höher) ist offensichtlich "SyntaxFehler" beim NTBackup-Aufruf.
Mach doch die Parameter analog zu der lesbaren Minik im VBScript
Set "NTPara=systemstate @C:\sicherung_neu.bks"
Set "NTPara=%NTPara% /F D:\ Sicherung_%Wochentag%"
Set "NTPara=%NTPara% /V:no /R:no /L:s /M normal"
...
ntbackup.exe %NTPara%
Aber erst nach dem Setzen der %Wochentag%-Variablen. *gg
Grüße
Biber
hab grad bei M$ angerufen... die haben anscheinend meine GetAllDateTimeInfos.bat noch nicht standardmäßig mit ausgeliefert...
vermutlich verstehen die meinen Code wieder mal nicht in Redmond..
Na, ich deren Code auch nicht immer..
Du findest eine Copy&Paste-bare (welch eine Wortschöpfung!) Kopie in meinem Batch-Tutorial III ..siehe den Link oben. [Edit]...schon erledigt, hab ich zu spät gesehen. [/Edit]
Kopier Dir die irgendwohin in Deinen %path% oder gib den Pfad explizit an im Batch.
Sorry für die anderen Tippfehler..sollte nur eine Skizze sein.
Da sind nur die Anfü-Zeichen zuviel!! Das vor dem Wort 'Sicherung_....' und das am Ende
...F D:\ "Sicherung_%Wochentag% ...
Die ErrorLevel von NTBackup sind auch nur Beispiele... schau lieber in der NTBackup-Doku nach.
ErrorLevel 4 (oder höher) ist offensichtlich "SyntaxFehler" beim NTBackup-Aufruf.
Mach doch die Parameter analog zu der lesbaren Minik im VBScript
Set "NTPara=systemstate @C:\sicherung_neu.bks"
Set "NTPara=%NTPara% /F D:\ Sicherung_%Wochentag%"
Set "NTPara=%NTPara% /V:no /R:no /L:s /M normal"
...
ntbackup.exe %NTPara%
Aber erst nach dem Setzen der %Wochentag%-Variablen. *gg
Grüße
Biber
Moin Alex,
blöde Tippfehler... *grmpff
Set "NTPara=backup systemstate @C:\sicherung_neu.bks"
Set "NTPara=%NTPara% /F D:\ Sicherung_%Wochentag%"
Set "NTPara=%NTPara% /V:no /R:no /L:s /M normal"
In der zweiten Zeile ist ein Leerzeichen zwischen "D:\" und "Sicherung..."
Und daher auch immer noch der Syntaxfehler.
[ Nicht zielführende Zwischenfrage:
Weiß eigentlich irgend jemand hier, warum M$'s Praktikanten bei NTBackup manche Parameterspezifikationen mit und manche ohne Doppelpunkt erwarten? Oder hat Bill diesen Job wieder irgendwelchen Azubis und umgeschulten Pizzabäckern zugeschoben??
Alberne Montagsproduktionen...]
Wieso glaubst Du, dass %cDow% nicht gesetzt ist?
(Wieso zweifeln immer alle an meinen Bätchen? *heuuuuuuuul)
Mach doch da bitte mal am CMD-Prompt den Test, ob denn ein Aufruf "GetAllDateTimeInfos" etwas sinnvolles tut.
Vielleicht ist da wieder mal eine verkehrte Zeile umgebrochen beim Copy&Paste.
Tapfer sein, wir bringen das schon zum Fliegen...
Frank / der Biber aus Bremen
blöde Tippfehler... *grmpff
Set "NTPara=backup systemstate @C:\sicherung_neu.bks"
Set "NTPara=%NTPara% /F D:\ Sicherung_%Wochentag%"
Set "NTPara=%NTPara% /V:no /R:no /L:s /M normal"
In der zweiten Zeile ist ein Leerzeichen zwischen "D:\" und "Sicherung..."
Und daher auch immer noch der Syntaxfehler.
[ Nicht zielführende Zwischenfrage:
Weiß eigentlich irgend jemand hier, warum M$'s Praktikanten bei NTBackup manche Parameterspezifikationen mit und manche ohne Doppelpunkt erwarten? Oder hat Bill diesen Job wieder irgendwelchen Azubis und umgeschulten Pizzabäckern zugeschoben??
Alberne Montagsproduktionen...]
Wieso glaubst Du, dass %cDow% nicht gesetzt ist?
(Wieso zweifeln immer alle an meinen Bätchen? *heuuuuuuuul)
Mach doch da bitte mal am CMD-Prompt den Test, ob denn ein Aufruf "GetAllDateTimeInfos" etwas sinnvolles tut.
Vielleicht ist da wieder mal eine verkehrte Zeile umgebrochen beim Copy&Paste.
Tapfer sein, wir bringen das schon zum Fliegen...
Frank / der Biber aus Bremen