SnapManager Oracle
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

查看插件脚本示例

贡献者

SnapManager 提供了一些脚本,您可以使用这些脚本作为示例来创建自己的脚本,也可以作为自定义脚本的基础。

您可以在以下位置找到插件脚本示例:

  • <default_install_directory>/plugins/examples/backup/create

  • <default_install_directory>/plugins/examples/clone/create

  • <default_install_directory>/plugins/unix/examples/backup/create/post

包含示例插件脚本的目录包含以下子目录:

  • 策略:包含配置后始终在克隆操作上运行的脚本。

  • PRE :包含配置后在克隆操作之前运行的脚本。

  • POST :包含配置后在克隆操作之后运行的脚本。

下表介绍了示例脚本:

脚本名称 Description 脚本类型

validate_sid.sh

包含对目标系统上使用的 SID 的其他检查。该脚本将检查 SID 是否具有以下特征:

  • 包含三个字母数字字符

  • 以字母开头

策略

cleanup.sh

清理目标系统,以便准备好存储新创建的克隆。根据需要保留或删除文件和目录。

预请求

Mirror_the_backup.sh

在使用 7- 模式 Data ONTAP 或集群模式 Data ONTAP 的 UNIX 环境中执行备份操作后,对卷进行镜像。

任务后

Vault_the_backup_cDOT.sh

在使用集群模式 Data ONTAP 的 UNIX 环境中执行备份操作后,将存储备份。

任务后

默认情况下,随 SnapManager 提供的脚本使用 bash shell 。在尝试运行任何示例脚本之前,您必须确保操作系统上已安装对 bash shell 的支持。

  1. 要验证您是否正在使用 bash shell ,请在命令提示符处输入以下命令: bash

    如果未看到错误,则表示 bash shell 运行正常。

    或者,您也可以在命令提示符处输入 which — bash 命令。

  2. 在以下目录中找到此脚本:

    <installdir>/plugins/examples/clone/create

  3. 在 vi 等脚本编辑器中打开此脚本。

示例脚本

以下示例自定义脚本将验证数据库 SID 名称,并防止克隆的数据库中使用无效名称。它包括三个操作(检查,描述和执行),这些操作是在运行脚本后调用的。该脚本还包括错误消息处理,代码为 0 , 4 和 >4 。

EXIT=0
name="Validate SID"
description="Validate SID used on the target system"
parameter=()

# reserved system IDs
INVALID_SIDS=("ADD" "ALL" "AND" "ANY" "ASC"
              "COM" "DBA" "END" "EPS" "FOR"
              "GID" "IBM" "INT" "KEY" "LOG"
              "MON" "NIX" "NOT" "OFF" "OMS"
              "RAW" "ROW" "SAP" "SET" "SGA"
              "SHG" "SID" "SQL" "SYS" "TMP"
              "UID" "USR" "VAR")
function _exit {
     rc=$1
     echo "Command complete."
    	return $rc}

function usage {
     echo "usage: $(basename $0) { -check | -describe | -execute }"
     _exit 99}

function describe {
    	echo "SM_PI_NAME:$name"
    	echo "SM_PI_DESCRIPTION:$description"
    	_exit 0}

function check {
    	_exit 0}

function execute {
    	IFS=\$ myEnv=$(env)
     for a in ${paramteter[@]}; do
       		key=$(echo ${$a} | awk -F':' '{ print $1 }')
         val=$(echo $myEnv | grep -i -w $key 2>/dev/null | awk -F'=' '{ print $2 }')

       		if [ -n "$val" ] ; then
              state="set to $val"
       		else
           			state="not set"
           			#indicate a FATAL error, do not continue processing
           			((EXIT=+4))
		       fi
         echo "parameter $key is $state"
     done

	######################################################################
	# additional checks
 # Use SnapManager environment variable of SM_TARGET_SID

	if [ -n "$SM_TARGET_SID" ] ; then
  		if [ ${#SM_TARGET_SID} -ne 3 ] ; then
        echo "SID is defined as a 3 digit value, [$SM_TARGET_SID] is not valid."
        EXIT=4
    else
        echo "${INVALID_SIDS[@]}" | grep -i -w $SM_TARGET_SID >/dev/null 2>&1
     			if [ $? -eq 0 ] ; then
            echo "The usage of SID [$SM_TARGET_SID] is not supported by SAP."
        				((EXIT+=4))
  		fi
	fi
	else
   		echo "SM_TARGET_SID not set"
     EXIT=4
	fi  _exit $EXIT}

# Include the 3 required operations for clone plugin
case $(echo "$1" | tr [A-Z] [a-z]) in
  -check )        check     ;;
  -describe )     describe  ;;
  -execute )      execute   ;;     	* )
		 echo "unknown option $1"    usage 		;;
esac