Files
nokia-hpux-oracle/rubrik_mv_op.ksh

111 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/ksh
#
# Open and Close MV using API call to CDM
# Written for AvonHCL / Nokia
# v1.0 - James Pattinson - October 2025
#
# usage: rubrik_mv_op.ksh -d <DBNAME> -v <logs|data> -o <open|close>
#
# -d Oracle DBNAME
# -v Volume to operate on, logs or data
# -o Operation to perform - open or close the MV
_SCRIPT_="$0"
get_script_dir() {
script="$1"
case "$script" in
/*) abs_path="$script" ;;
*) abs_path="$PWD/$script" ;;
esac
while [ -L "$abs_path" ]; do
link=$(readlink "$abs_path")
case "$link" in
/*) abs_path="$link" ;;
*) abs_path="$(dirname "$abs_path")/$link" ;;
esac
done
script_dir=$(dirname "$abs_path")
cd "$script_dir" 2>/dev/null && pwd
}
MYDIR=$(get_script_dir "$_SCRIPT_")
. $MYDIR/rubrik.conf
. $MYDIR/oracle_funcs.ksh
usage() {
echo "Usage: $0 -d <DBNAME> -v <logs|data> -o <open|close>"
echo " $0 -n <MV_NAME> -o <open|close>"
echo " -d Oracle DBNAME"
echo " -v Volume to operate on, logs or data"
echo " -o Operation to perform - open or close the MV"
echo " -n Specify MV name directly (use only with -o)"
exit 1
}
force=0
MVNAME=""
while getopts "d:v:o:n:" o; do
case "${o}" in
d)
DBNAME=${OPTARG}
;;
v)
VOLUME=${OPTARG}
;;
o)
OPCODE=${OPTARG}
;;
n)
MVNAME=${OPTARG}
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
# Validate options
if [ -n "$MVNAME" ]; then
# Direct MV name mode: require -n and -o only
if [ -z "$OPCODE" ]; then
usage
fi
mv_name="$MVNAME"
elif [ -n "$DBNAME" ] && [ -n "$VOLUME" ] && [ -n "$OPCODE" ]; then
# Standard mode: require -d, -v, -o
mv_name=$(get_short_hostname)_${DBNAME}_${VOLUME}
else
usage
fi
# Script starts here
get_short_hostname() {
# Check OS type first - HP-UX hostname doesn't support -s
os_type=$(uname -s)
if [ "$os_type" = "HP-UX" ]; then
hostname | awk -F. '{print $1}'
else
# Try -s flag on other systems
if hostname -s >/dev/null 2>&1; then
hostname -s
else
hostname | awk -F. '{print $1}'
fi
fi
}
get_mv
case $OPCODE in
open) open_mv ;;
close) close_mv ;;
*) echo "ERROR: Invalid opcode. Specify open or close" ; exit_with_error
esac
cleanup