#!/bin/ksh # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # 61haes_r714 src/43haes/usr/sbin/cluster/cspoc/cexec.sh 1.5 # # Licensed Materials - Property of IBM # # Restricted Materials of IBM # # COPYRIGHT International Business Machines Corp. 1996,2011 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # @(#)06 1.5 src/43haes/usr/sbin/cluster/cspoc/cexec.sh, hacmp.cspoc, 61haes_r714 11/28/11 14:58:06 ################################################################################ # COMPONENT_NAME: CSPOC # # Name: # cexec # # Description: # This routine provides for pre and post processing for commands # being remotely executed using cdsh. # # Arguments: # AIX Command and arguments # # Return Values: # 0 success # 1 failure # ################################################################################ [ "$VERBOSE_LOGGING" = "high" ] && set -x PROGNAME=$(basename ${0}) PATH="$($(dirname ${0})/../utilities/cl_get_path all)" HA_DIR="$(cl_get_path)" function cexec { typeset USAGE="USAGE: cexec [args]\n" # LOCAL VARIABLES typeset RC COMMAND CMD_ARGS # CHECK USAGE [[ $# -lt 1 ]] && { nls_msg -2 3 3 "$USAGE" return 2 } ## # DO PRE-PROCESSING BEFORE COMMAND IS EXECUTED ## # GET COMMAND NAME TO BE EXECUTED COMMAND=$1 ; shift 1 COMMAND_ARGS="$@" set -- # THE COMMAND LINE ARGUMENTS MUST BE PROCESS TO DECODE ALL NON-FLAG ARGS # NON-FLAG ARGS ARE THOSE THAT DO NOT START WITH A DASH. # THIS IS NECESSARY TO PRESERVE QUOTING AND EMBEDDED SPACES ACROSS # MULTIPLE INVOCATIONS OF THE SHELL. # (e.g. cl_script -> cdsh -> dsh -> rsh -> cexec ) for ITEM in $COMMAND_ARGS do case $ITEM in -*) # FLAGS ARE NOT ENCODED - SIMPLY ADD THEM TO $CMD_ARGS ## CMD_ARGS=${CMD_ARGS:+$CMD_ARGS" "}$1 set -- "$@" $ITEM ;; *) # ALL FLAG AND NON-FLAG ARGS ARE ENCODOED # ADD THE DECODED ARG TO $CMD_ARGS ### CMD_ARGS=${CMD_ARGS:+$CMD_ARGS" "}$(print -- "$1" | cldecodearg) set -- "$@" $(print -- "$ITEM" | cldecodearg) ;; esac done # 710 # Set the CLUSTER_OVERRIDE environment variable to bypass CAAC checking in 710 # the AIX commands with corresponding C-SPOC commands... 710 # 710 export CLUSTER_OVERRIDE="yes" # 710 # EXECUTE THE COMMAND AND SAVE THE RETURN CODE if [[ $COMMAND != 'eval' ]] then eval $COMMAND "$@" else eval "$@" fi RC=$? ## # DO POST-PROCESSING AFTER COMMAND IS EXECUTED ## # PRINT RETURN CODE FROM COMMAND TO STDERR print "RETURN_CODE=${RC}" >&2 return ${RC} } cexec "$@"