Forum Discussion

vikram_mehta08's avatar
10 years ago

Email notifications without BLAT

Hello,

 

I am trying to retreive email notifications from NetBackup 7.5. My supervisor does not want me to download BLAT so I wrote a VBScript that uses CDO to send emails. I wrote a line in nbmail.cmd that runs the script with parameters:

cscript mailtest.vbs %1 %2 %3

The parameters I used are what was defined in nbmail.cmd. I have tested running just the nbmail.cmd through the server and it works, I have gotten emails from there, but when I try to have NetBackup send it, I get nothing. I have configured the Universal Settings in the clients to include my email and have tried both "Server sends mail" and "Client sends mail". I ran a backup and even saw it complete, but I got no email.

Note: The scripts that I configured are all on the master server, but I added them to the client servers as well to test out.

Any help would be much appreciated.

 

 

  • However, sometimes it is useful to capture the output, and errors if any, of commands embedded within scripts that NetBackup calls.  So, I usually like to start Windows DOS batch scripts with this at the very start:

    @echo off
    
    setlocal enabledelayedexpansion
    
    set z_path=%~dp0
    
    set z_name=%~n0
    
    set z_file_log=!z_path!!z_name!.log

    ...which means:

    1) @echo off - the leading @ stops the next command from being echo'd, and echo off disables echoing for the rest of the script

    2) setlocal enabledelayedexpansion - means that variables can be expanded within loops using the exclamation (or shriek) characters, i.e. these ! !, because if you try to use a % % around variable names inside code inside a loop then they pre-expanded before the loop actually starts, whereas using ! ! means that variables get expanded at the time the line of code being intrepreted actually executes.

    3) set z_path=%~dp0 - means, store in the variable named z_path the value of parameter 0 (i.e. the full file specification of the script being executed), but extract just the drive letter and folder path (dp = drive+path) segment from the full path of the file name of the script being executed.

    4) set z_name=%~n0 - means, store in the variable named z_name the value of paramter 0 (i.e. the full path specification of the script being executed), but just extract the name part/segment of the full script file name.

    5) set z_file_log=!z_path!!z_name!.log - means store in a variable named z_file_log, the contents of the variables z_path and z_name and add the characters .log to the end of those values - so, what this means is that the variable z_file_log now holds a full drive letter + folder path + filename + file extenstion of '.log', which is great because it means that now we can use that full "log file" specification file name to capture output from other commands - which also means that the log file for any script that you use this code in also lives in the same folder as the script that NetBackup calls.

    .

    Now that we have a decent log file name, this means that instead of binning (to nul, to the bit-bucket) any output or errors from a call to 'cscript', that instead now we can capture the output, so in your nbmail.cmd script you could now do something like:

    cscript mailer.vbs %1 %2 %3 >>"!z_file_log!" 2>&1

    ...which means:

    - cscript - means run the VBscript interpretation engine named cscript.exe

    - mailer.vbs - means tells the 'cscript' engine to open and begin reading and to start executing the contents of mailer.vbs

    - %1 %2 %3 - means pass the three DOS parameters (that mail.cmd received from NetBackup) to the command line so the cscript will make them available to mailer.vbs

    - >>"!z_file_log!" - means >> = append, and append to a file whose name is inside z_file_log, i.e. the use of surrounding ! ! characters tell DOS to expand the contents of the variable named z_file_log, and the surrounding quotes " " are required because the full drive+folder+name+.log inside z_file_log may contain spaces, and so using " " tells DOS to keep it all together

    - 2>&1 - means do the same for stderr as you do for stdout, and so any DOS or cscript errors also get appended to the contents of the log file.

    - and note how we didn't need a leading '@' on this command, because we already disabled echoing above with the '@echo off' command.

    .

    And I like to capture the exit status of the cscript command, so that I can writethe status to the log file, so that we can see why our cscript command, or the execution of mailer.vbs, may have failed, e.g.:

    set z_sts=!errorlevel!
    
    echo call to cscript status code was !z_sts! >>"z_file_log!" 2>&1
    
    exit /b !z_sts!

    ...which means:

    - set z_sts=!errorlevel! - means store in teh variable named z_sts the volume of the variable errorlevel, see how the use of !errorlevel! tells DOS to expand errorlevel in to the contents of errorlevel.

    - and then the echo sends a string of words and the contents (because we're using ! ! again) of z_sts to stdout, but our use of >>"!z_file_log!" means append stdout to the end of the file whose name is expanded out of the contents of variable z_file_log, and finnaly our old friend 2>&1 means do the same with errors which be generated by the echo command.

    - exit /b !z_sts! - means exit teh script, and /b means just exit this level instance ie. don't exit the whole chain of calling/called DOS scripts, and !z_sts! tells the exit command to pass back the contents of the variable z_sts, i.e. to pass backup a final exit code back to the NetBackup process which called nbmail.cmd in the first place.

    .

    So, maybe your nbmail.cmd could look someting like:

    @echo off
    
    setlocal enabledelayedexpansion
    
    set z_path=%~dp0
    
    set z_name=%~n0
    
    set z_file_log=!z_path!!z_name!.log
    
    cscript mailer.vbs %1 %2 %3 >>"!z_file_log!" 2>&1
    
    set z_sts=!errorlevel!
    
    echo call to cscript status code was !z_sts! >>"z_file_log!" 2>&1
    
    exit /b !z_sts!

    ...which will now run silently, and pass back a proper exit code, and capture all output and all errors in a file named "nbmail.log", as a companion file in the same folder that "nbmail.cmd" lives in.

    HTH.

12 Replies