Listing 1 changeident
#!/bin/ksh
# Listing 1: changeident
# This is the driver script for the changeident application
. ../lib/globals
if [ "$EFFECTIVE_USER" != root ]
then
echo "You must be root to run $0"
exit 1
fi
function run_program
{
typeset program=$1
echo ""
echo "====================================================="
if [ -x $CHANGEIDENT_LIB_DIR/$program ]
then
if [ -n "$nodename" ]
then
$CHANGEIDENT_LIB_DIR/$1 -n $nodename
else
$CHANGEIDENT_LIB_DIR/$1
fi
else
echo "Program '$program' could not be executed!"
fi
}
reboot_automatically=$FALSE
program_list=""
while getopts :m:n:p:r option
do
case "$option"
in
m)
modules_file=$CHANGEIDENT_ETC_DIR/modules/$OPTARG
;;
n)
nodename=$OPTARG
;;
p)
program_list=$OPTARG
;;
r)
reboot_automatically=$TRUE
;;
?)
echo "Usage: $(basename $0) [-m modules_file] [-n nodename] \
[-p \"program ...\"] [-r]"
exit 1
;;
esac
done
touch $REBOOT
chown root:root $REBOOT
chmod 0644 $REBOOT
echo $FALSE > $REBOOT
touch $LOG_FILE
chown root:root $LOG_FILE
chmod 0644 $LOG_FILE
touch $CHANGELIST
chown root:root $CHANGELIST
chmod 0644 $CHANGELIST
> $CHANGELIST
echo "------------------------------------"
echo "Changeident - Change System Identity"
echo "------------------------------------"
echo ""
echo "The following programs will be executed:"
echo ""
modules=""
[ -n "$modules_file" ] && modules="$modules $(cat -s $modules_file)"
[ -n "$program_list" ] && modules="$modules $program_list"
[ -z "$modules" ] && modules=$(cat -s $DEFAULT_MODULES_FILE)
i=0
for program in $modules
do
if [ -x $CHANGEIDENT_LIB_DIR/$program ]
then
i=$(($i+1))
[ $i -lt 10 ] && echo " \c"
echo "$i. \c"
echo $program
fi
done
if [ -z "$nodename" ]
then
default=y
prompt="Continue (y/n)? [$default]:"
answer=$(ckyorn -Q -p "$prompt" -d "$default")
else
answer=y
fi
case $answer
in
y* | Y*)
echo "\nchangeident was run on $(date)" >> $LOG_FILE
echo "---------------------------------------------------" >> $LOG_FILE
for program in $modules
do
if [ -x $CHANGEIDENT_LIB_DIR/$program ]
then
run_program $program
fi
done
;;
*)
exit 1
;;
esac
echo ""
echo "====================================================="
echo "Finished ..."
if [ $(wc -l < $CHANGELIST) -gt 0 ]
then
echo ""
echo "The following files were changed:"
echo ""
sort -u $CHANGELIST
fi
echo ""
if [ "$(cat -s $REBOOT)" -eq $TRUE ]
then
echo "The system must be rebooted!"
if [ $reboot_automatically -eq $TRUE ]
then
reboot
else
default=n
prompt="Reboot the system now (y/n)? [$default]:"
answer=$(ckyorn -Q -p "$prompt" -d "$default")
case "$answer"
in
y*|Y*)
reboot
;;
*)
echo ""
echo "The system was not rebooted."
echo ""
;;
esac
fi
fi
exit 0
|