vikram_mehta08
10 years agoLevel 3
Backup Exit Notify script
How would I configure the backup_exit_notify script to email me when certain clients have failed their backups and be able to filter the emails with respect to the policy names?
Opscenter is easier as far as my experience of using past 8 years. The regular opscenter is free which could retain your info for about 60 days. Quick info here : http://eval.symantec.com/mktginfo/enterprise/white_papers/b-nbu_7_opscenter_analytics_WP.en-us.pdf
Hi Vikram,
Here's an example backup_exit_notify.cmd for Windows:
@echo off setlocal enabledelayedexpansion REM ************************************************************************************************ REM * File: backup_exit_notify.cmd REM * Purpose: Called by NetBackup, when backup jobs complete. REM * REM * Vers Date Who Description REM * ---- ---- --- ----------- REM * v0.01 23-APR-2015 sdo First draft. REM ************************************************************************************************ REM * Disclaimer REM * ---------- REM * This script was developed and tested using: REM * - Windows 2008 R2 SP1 REM * - NetBackup Server v7.6.0.4 REM * REM * This script is not endorsed, nor has it been tested, by Symantec. Neither the author, nor REM * Symantec, shall accept any liability from any harm, loss, or damage caused by the use REM * and/or mis-use of this script, either in its original form, or in a modified form. Use of REM * this script in its original, or modified, form is entirely at the end user's own risk. REM * This script is furnished on an example basis only, and may not be suitable for any given REM * environment. REM ************************************************************************************************ REM * Sharing REM * ------- REM * This script is free to share and modify, as long as this entire header section is kept with REM * the script, and maintained and updated appropriately as any changes are made. REM ************************************************************************************************ REM * Notes REM * ----- REM * 1) Mutiple instances of this script could be instantiated concurrently by NetBackup at any REM * given time. REM * REM * 2) Therefore this script has to somehow make its own working file names unique. REM * REM * 3) Hence we use a double random number in an attempt to make our working file names unique. REM * REM * 4) When this script is run by NetBackup, then it runs as root, which in Windows means that REM * this script runs a "NT_System_Authority". REM * REM * 5) Therefore, when this script runs, the value in `!temp!` will probably point towards: REM * C:\Windows\Temp REM * REM * 6) Which means that if this script has a bug, or the call to bperror fails, or the call to REM * the emailer fails, then small temporary files will begin to accumulate in the folder REM * pointed to by `!temp!`, i.e. files will begin to accumulate in: REM * C:\Windows\Temp REM * REM * 7) NetBackup does not wait for the completion of this script, and therefore does not check REM * for, nor take any action based upon, the final exist status of this script. REM ************************************************************************************************ REM ************************************************************************************************ REM ************************************************************************************************ REM ************************************************************************************************ REM *** Build some file names used by this script... set z_path=%~dp0 set z_name=%~n0 set z_random=!random!-!random! set z_file_csv=!temp!\!z_name!.csv set z_file_log=!temp!\!z_name!-!z_random!.log set z_file_txt=!temp!\!z_name!-!z_random!.txt if exist "!z_file_log!" del "!z_file_log!" if exist "!z_file_txt!" del "!z_file_txt!" REM ************************************************************************************************ REM ************************************************************************************************ REM *** Were we called by NetBackup? if /i not "!IS_NETBACKUP_DAEMON!"=="yes" ( echo !date! !time:~0,8! Script can only be called by NetBackup... exit /b 1 ) REM ************************************************************************************************ REM ************************************************************************************************ REM *** Append to a log of all backup job statii... (echo !date! !time:~0,8!,!computername!,%~1,%~2,%~3,%~4,%~5,%~6,%~7,%~8)>>"!z_file_csv!" REM ************************************************************************************************ REM ************************************************************************************************ REM *** If not "done_trying" then exit out ? REM *** N.B: Comment out this line if you want all 'attempts' to send an email... if "%~7"=="0" exit /b REM ************************************************************************************************ REM ************************************************************************************************ REM *** If success, or partial, then do we need to email ? REM *** N.B: Comment out these lines if you also want emails to be sent for backup status 0 or 1... REM if "%~5"=="0" exit /b REM if "%~5"=="1" exit /b REM ************************************************************************************************ REM ************************************************************************************************ REM *** Build an email message body text file... call :r_txt "" call :r_txt "Backup job details:" call :r_txt " P1 - Client: %~1" call :r_txt " P2 - Policy: %~2" call :r_txt " P3 - Schedule: %~3" call :r_txt " P4 - Schedule Type: %~4" call :r_txt " P5 - Status: %~5" call :r_txt " P6 - Stream: %~6" call :r_txt " P7 - Done Trying: %~7" call :r_txt " P8 - Primary JobID: %~8" if not "%~5"=="0" ( if not "%~5"=="1" ( call :r_txt "" call :r_txt "" call :r_txt "Backup status `%~5` error is described as:" echo+ >>"!z_file_txt!" bperror -S %~5 -r >>"!z_file_txt!" 2>&1 set z_sts=!errorlevel! if not !z_sts!==0 ( call :log "...call to bperror failed, status `!z_sts!`..." goto :end ) echo+ >>"!z_file_txt!" ) ) call :r_txt "" call :r_txt "[end]" REM ************************************************************************************************ REM ************************************************************************************************ REM *** Send an email... set z_recipient=someone@whocares.com if "%~5"=="0" ( set z_subject=Backup job success for client %~1 in policy %~2... ) else ( if "%~5"=="1" ( set z_subject=Backup job partial for client %~1 in policy %~2... ) else ( set z_subject=Backup job failed for client %~1 in policy %~2, with status %~5... ) ) call :log "" call :log "Calling emailer..." blat "!z_file_txt!" -s "!z_subject!" -t "!z_recipient!" -p myprofile -debug >>"!z_file_log!" 2>&1 set z_sts=!errorlevel! if not !z_sts!==0 ( call :log "...call to email failed, status `!z_sts!`..." goto :end ) REM ************************************************************************************************ REM ************************************************************************************************ REM *** If we get here, then the call to emailer appeared to be successful, so now we can remove... REM *** ...the email body text file, and also remove the log file for the active running instance... REM *** ...of this script... if exist "!z_file_log!" del "!z_file_log!" if exist "!z_file_txt!" del "!z_file_txt!" REM ************************************************************************************************ REM ************************************************************************************************ :end exit /b REM ************************************************************************************************ REM ************************************************************************************************ REM *** Write some text to the email body file,... REM *** ...but also capture it in the log file for the running instance of this script... :r_txt (echo !date! !time:~0,8! %~1)>>"!z_file_log!" (echo !date! !time:~0,8! %~1)>>"!z_file_txt!" goto :eof REM ************************************************************************************************ REM ************************************************************************************************ :log (echo !date! !time:~0,8! %~1)>>"!z_file_log!" goto :eof
.
You'll need to adjust the call to 'blat' to call your email routine instead.
HTH.