Skip to main content
SnapCenter Plug-in for VMware vSphere 4.9
本产品推出了新版本。
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

预处理脚本和后处理脚本

贡献者

您可以在数据保护操作中使用自定义预处理和后处理脚本。这些脚本可以在数据保护作业之前或之后启用自动化。例如,您可以包含一个脚本,用于自动通知您数据保护作业失败或出现警告。在设置预处理脚本和后处理脚本之前,您应了解创建这些脚本的一些要求。

支持的脚本类型

支持 Perl 和 shell 脚本。
Shell脚本必须以开头 !/bin/bash。 (!/bin/sh 不支持。)

脚本路径位置

预处理脚本和后处理脚本由适用于 VMware vSphere 的 SnapCenter 插件运行。因此,这些脚本必须位于适用于 VMware vSphere 的 SnapCenter 插件 OVA 中,并具有可执行权限。

例如:
* Perl脚本路径可能是 /support/support/script.pl
* shell脚本路径可能是 /support/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/support/log_env.log
*对于shell脚本: /support/support/log_file.log

传递给脚本的环境变量

您可以在脚本中使用下表所示的环境变量。

环境变量 Description

BACKUP_NAME

备份的名称。
仅在后脚本中传递的变量。

BACKUP_DATE

备份日期、格式为 yyyymmdd
仅在后脚本中传递的变量。

BACKUP_TIME

备份时间、格式为 hhmmss
仅在后脚本中传递的变量。

BACKUP_PHASE

要在其中运行脚本的备份阶段。
有效值为: PRE_BACKUP, POST_BACKUP, and FAILED_BACKUP
在预处理脚本和后处理脚本中传递的变量。

STORAGE_SNAPSHOTS

备份中的存储快照数量。
仅在后脚本中传递的变量。

STORAGE_SNAPSHOT.#

已定义的存储快照之一、格式如下:
<filer>:/vol/<volume>:<ONTAP-snapshot-name>
仅在后脚本中传递的变量。

VIRTUAL_MACHINES

备份中的 VM 数。
在预处理脚本和后处理脚本中传递的变量。

VIRTUAL_MACHINE.#

定义的虚拟机之一、格式如下:
<VM name>[vertical bar]<VM UUID>[vertical bar]<power-state>[vertical bar]<VM snapshot>[vertical bar]<ip-addresses>
<power-state> has the values POWERED_ON, POWERED_OFF, or
SUSPENDED

<VM snapshot> 具有值 truefalse
在预处理脚本和后处理脚本中传递的变量。

脚本超时

备份脚本的超时时间为 15 分钟,无法修改。

Perl 脚本 1 示例

以下示例 Perl 脚本将在运行备份时打印环境变量。

#!/usr/bin/perl
use warnings;
use strict;
my $argnum;
my $logfile = '/support/support/log_env.log';
open (FH, '>>', $logfile) or die $!;
foreach (sort keys %ENV) {
print FH "$_ = $ENV{$_}\n";
}
print FH "=========\n";
close (FH);

示例Perl脚本#2

以下示例将显示有关备份的信息。

#!/usr/bin/perl
use warnings;
use strict;

my $argnum;
my $logfile = '/support/support/log_env.log';
open (FH, '>>', $logfile) or die $!;

print FH "BACKUP_PHASE is $ENV{'BACKUP_PHASE'}\n";
print FH "Backup name $ENV{'BACKUP_NAME'}\n";
print FH "Virtual Machine $ENV{'VIRTUAL_MACHINES'}\n";
print FH "VIRTUAL_MACHINE # is $ENV{'VIRTUAL_MACHINE.1'}\n";
print FH "BACKUP_DATE is $ENV{'BACKUP_DATE'}\n";
print FH "BACKUP_TIME is $ENV{'BACKUP_TIME'}\n";
print FH "STORAGE_SNAPSHOTS is $ENV{'STORAGE_SNAPSHOTS'}\n";
print FH "STORAGE_SNAPSHOT # is $ENV{'STORAGE_SNAPSHOT.1'}\n";

print FH "PWD is $ENV{'PWD'}\n";
print FH "INVOCATION_ID is $ENV{'INVOCATION_ID'}\n";

print FH "=========\n";
close (FH);

示例 Shell 脚本

===============================================
#!/bin/bash
echo Stage $BACKUP_NAME >> /support/support/log_file.log
env >> /support/support/log_file.log
===============================================