预处理脚本和后处理脚本
您可以在数据保护操作中使用自定义预处理和后处理脚本。这些脚本可以在数据保护作业之前或之后启用自动化。例如,您可以包含一个脚本,用于自动通知您数据保护作业失败或出现警告。在设置预处理脚本和后处理脚本之前,您应了解创建这些脚本的一些要求。
支持的脚本类型
支持 Perl 和 shell 脚本。Shell 脚本必须以 ` ! /bin/bash` 开头。(不支持` ! /bin/sh` 。)
脚本路径位置
预处理脚本和后处理脚本由适用于 VMware vSphere 的 SnapCenter 插件运行。因此,这些脚本必须位于适用于 VMware vSphere 的 SnapCenter 插件 OVA 中,并具有可执行权限。
例如: * Perl 脚本路径可能是 ` /support/support/script.pl` * shell 脚本路径可能是 ` /support/script.sh`
执行脚本时会验证脚本路径。
指定脚本的位置
脚本在备份策略中指定。启动备份作业后,策略会自动将脚本与要备份的资源关联起来。
要指定多个脚本,请在每个脚本路径后按 * Enter * ,以便在单独的行中列出每个脚本。不允许使用分号(;)。您可以指定多个预处理和多个后处理脚本。一个脚本可以同时编码为预处理脚本和后处理脚本,并可调用其他脚本。
执行脚本时
脚本将根据为 backup_phase 设置的值执行。
-
backup_phase=pre_backup
预处理将在操作的 PRE_BACKUP 阶段执行。
如果预处理失败,备份将成功完成,并会发送一条警告消息。 |
-
backup_phase=post_backup 或 backup_phase=failed_backup
备份成功完成后,将在操作的 post_backup 阶段执行后脚本;如果备份未成功完成,则在 failed_backup 阶段执行后脚本。
如果一个后处理脚本失败,备份将成功完成,并会发送一条警告消息。 |
检查以下内容以验证是否已填充脚本值: * 对于 Perl 脚本: ` /support/log/env.log` * 对于 shell 脚本: ` /support/support/log_file.log`
传递给脚本的环境变量
您可以在脚本中使用下表所示的环境变量。
环境变量 | Description |
---|---|
|
备份的名称。仅在后脚本中传递的变量。 |
|
备份日期,格式为 |
|
备份时间,格式为 |
|
要在其中运行脚本的备份阶段。有效值为: |
|
备份中的存储快照数量。仅在后脚本中传递的变量。 |
|
已定义的存储快照之一,格式如下: ` <filer> : /vol/<volume> : <ontap-snapshot-name>` Variable passed in postscripts only 。 |
|
备份中的 VM 数。在预处理脚本和后处理脚本中传递的变量。 |
|
已定义的虚拟机之一,格式如下: ` <VM name><vertical Bar><VM UID><vertical Bar><power-state><vertical Bar><VM snapshot><vertical Bar><ip-Addresses> <power-state> 具有 powed_on , powed_off 或 suspended` ` <VM snapshot>` 的值为 |
脚本超时
备份脚本的超时时间为 15 分钟,无法修改。
Perl 脚本 1 示例
以下示例 Perl 脚本将在运行备份时打印环境变量。
` # ! /usr/bin/perl` 使用警告;
使用 strict ;
my $argnum ;
my $logfile = "/support/support/log_env.log ;
open ( FH , ">>" , $logfile )或 die $ !;
foreach (排序键 %ENV ) {
print FH "$_ = $FH = $= $FH
` = $=` $FHFH = $_= $FH = $FH= $n
= $FH = $FH = $FH = $FH = $N = $FH = $FH= $FH= $N = $= $=
Perl 脚本 2 示例
以下示例将显示有关备份的信息。
` # ! /usr/bin/perl` 使用警告;
使用 strict ;
my $argnum ;
my $logfile = "/support/support/log_env.log" ;
open ( fH , ">>" , $logfile )或 die $ !;
打印 FH "backup_phase is $ENV { 'backup_phase' } \n" ;
打印 FH "Backup name $ENV { 'backup_name' } \n" ;
打印
FH "Virtual Machine $ENV { 'virtual_machine' } \n" ;
打印 FH "virtual_machine # is $ENV { 'virtual_machine.1' }
; "$ENV_time"
` "$STOR" ; "$EN_STORE' ; "$EN_STORE' { EN_STORE' }
`$EN_STORE' ; 'EN_STORE' N ; 'EN_STORE' N ; 'EN_STORE' { EN_STORE' N }
print FH "PWD is $ENV { 'PWD } \n" ;
print FH "invocation_ID is $ENV { 'invocation_ID' } \n" ;
print FH "="======\n" ;
Close ( FH );
示例 Shell 脚本
` =======================================================================================================================================================================EN`