Listing 2 globals
# Listing 2: globals
# The globals file sets the global variables, the OS specific environment,
# and alternate functions for the Sun ckyorn and ckstr functions.
# Also, provides a reboot function if the OS lacks one.
TRUE=0
FALSE=1
CHANGEIDENT_HOME_DIR=/opt/changeident
CHANGEIDENT_BIN_DIR=$CHANGEIDENT_HOME_DIR/bin
CHANGEIDENT_LIB_DIR=$CHANGEIDENT_HOME_DIR/lib
CHANGEIDENT_VAR_DIR=$CHANGEIDENT_HOME_DIR/var
CHANGEIDENT_ETC_DIR=$CHANGEIDENT_HOME_DIR/etc
CONFIG_DIR=$CHANGEIDENT_ETC_DIR/hosts
modules_file=example
os_name=$(uname)
if [ "$os_name" = SunOS ]
then
modules_file=Solaris
release_level=$(uname -r)
if [ "$release_level" = 5.7 ]
then
modules_file=Solaris_7
if [ $(pkginfo INTLitenv 2>/dev/null | wc -l) -gt 0 ]
then
modules_file=Intel_Solaris_7
fi
fi
fi
DEFAULT_MODULES_FILE=$CHANGEIDENT_ETC_DIR/modules/$modules_file
LOG_FILE=$CHANGEIDENT_VAR_DIR/changeident.log
CHANGELIST=$CHANGEIDENT_VAR_DIR/files.changed
REBOOT=$CHANGEIDENT_VAR_DIR/reboot.flag
PATH=/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/usr/ccs/bin
EFFECTIVE_USER=$(id | cut -d\( -f2 | cut -d\) -f1)
if ! type reboot > /dev/null
then
function reboot {
init 6
}
fi
if ! type ckyorn > /dev/null
then
# this function emulates the Solaris internal ckyorn function.
# optional parameters:
# d - default value
# p - user prompt
# Q - disable q for quit
# return: Y, y, N, N and q, Q if Q option is not disabled.
function ckyorn {
typeset option=
typeset default=
typeset prompt=
typeset REPLY=
typeset UREPLY=
typeset Q=Qq
while getopts :p:d:Q option
do
case $option
in
d) default=$OPTARG ;;
p) prompt=$OPTARG ;;
Q) typeset Q="" ;;
esac
done
while echo "$prompt\c" 1>&2
do
read REPLY
UREPLY=$REPLY
case "${UREPLY:=$default}"
in
[ynYN$Q]*) break ;;
*) echo "ERROR: Please enter yes or no." 1>&2 ;;
esac
done
echo "$UREPLY"
}
fi
if ! type ckstr > /dev/null
then
function matchregex { expr "$1" : "$2" >/dev/null 2>&1; }
# this function emulates the Solaris internal ckstr function.
# paramters passed:
# -d default value
# -p prompt
# -h help string
# -r regular expression
# this function returns the user entered value that satisfies
# the regular expression.
function ckstr {
typeset option=''
typeset default=''
typeset prompt=''
typeset REPLY=''
typeset -i Q=1 # false
typeset help=''
typeset regex=''
while getopts p:d:h:r:Q option
do
case $option
in
d)
default=$OPTARG ;;
p)
prompt=$OPTARG ;;
Q)
Q=0 ;;
h)
help=$OPTARG ;;
r)
regex="$OPTARG" ;;
esac
done
# redirect the 'prompt' to standard error
while echo "$prompt\c" 1>&2
do
read REPLY
REPLY=${REPLY:=$default}
# stop if no regular expression
[ -z $regex ] && break
# return q if enabled
[ $Q -eq 0 ] || case "$REPLY" in [qQ]*) break;; esac
# check if help should be displayed
[ "$REPLY" = "?" ] && [ ! -z "$help" ] && echo "$help" 1>&2 && continue
# check the pattern
matchregex "$REPLY" "$regex" && break || \
echo "ERROR: Pattern matching has failed" 1>&2
done
echo "$REPLY\c"
}
fi
|