Writing Custom Scripts

To coordinate application activity on VMs included into a protection domain before and after a PD snapshot is taken, you can run custom scripts. A custom script performs pre-freeze operations, takes the PD snapshot, and finally performs post-thaw operations.


Veeam does not provide support for cases related to custom scripts.

You can use any programming language to write a script. However, you must specify the used interpreter in the shebang line, for example: #!/usr/bin/python3. For more information, see Appendix A. Custom Script Sample.


You cannot use binary files for custom scripts.

While writing custom scripts, use the following arguments:




Name of a protection domain for which a PD snapshot is created.


Name of a job that runs the script.


Path to a folder where script logs are stored.


Level of logging.

To specify parameters required for connecting to the Nutanix AHV cluster where VMs included into the protection domain are running, use environment variables such as in the following example:

nutanixClusterIp = os.getenv('NUTANIX_CLUSTER_ADDRESS')
nutanixLogin = os.getenv('NUTANIX_CLUSTER_LOGIN')
nutanixPass = os.getenv('NUTANIX_CLUSTER_PASSWORD')

You can find script logs in the custom_script.log file stored in the /var/log/nxbackupagent/Backup/<job_name_job_uuid>/<pd_name>/ folder on the backup appliance. The file also contains a JSON string that includes the script execution status, an error description (if any) and an identifier of the PD snapshot if it has been created, for example:

  • Script execution succeeded:

Result: {"status": "Success", "errorMessage": "", "oob_schedule_id": 7885270}

  • Script execution failed:

Result: {"status": "Failed", "errorMessage": "Unable to get vm_id list for Protection Domain='VeeamBackupProtection': Authentication failed.", "oob_schedule_id": ""}

  • Script execution completed with a warning:

Result: {"status": "Warning", "errorMessage": "Pre-freeze took more time than expected", "oob_schedule_id": "44509"}



You can track the script execution progress on the Session Logs page in the backup appliance web console. Alternatively, you can download log files to your local machine.