Listing 2 buc_server.ss: Back up check utility, server
#!/usr/bin/ksh
# Listing 2: buc_server.ss: Back Up Check Utility, server:
# Execute the oncheck utility and find out when the last backup
# completed. Build a datatime string, insert it into the remote_variables
# table, and return to buc_client.ss.
# This script is called by buc_client.ss.
# this shell script:
# 1) Initialize variables, check informix user, set TZ, etc.
# 2) Executes the oncheck -pr utility retrieving backup datetime.
# 3) Get the current datetime.
# 4) Format a string with the backup and current datetimes.
# 5) Insert formatted string into the remote_values table.
# 6) Return to buc_client.ss.
# author: Ed Schaefer
# Date: 05/05/2001
export INFORMIXDIR=/usr/informix
export PATH=/bin:/usr/bin:/usr/ucb:/etc:$INFORMIXDIR/bin:/usr/local/bin
DBNAME="testdb" # database name
INTERFACE_CMD="dbaccess"
DBCOMMAND="$INTERFACE_CMD $DBNAME"
# limit to the effective informix user
[ $(id|sed -e 's,^[^(]*(,,' -e 's,).*$,,' -e 1q) != "informix" ] && echo "Only \
user informix executes $0" && exit 1
# set the time zone. Informix commands executed remotely such as
# oncheck won't work if the TZ isn't correct. Solaris 7 specific
export TZ=`grep TZ= /etc/TIMEZONE|cut -d= -f2`
if [ "$#" -ne 1 ]; then
echo "$0 needs an argument. Terminating!"
exit 1
fi
rem_key=$1
# this function takes a date argument
# in the form MM/DD/YYYY and returns
# YYYY-MM-DD
function return_datetime {
# set arguments
set - $(IFS='/'; echo $1)
echo $3-$1-$2
}
# execute oncheck -pr and find the line:
# Real Time Archive 02/25/01 22:47:12
# the last archive date and time is the fifth and sixth fields
ret_str=$($INFORMIXDIR/bin/oncheck -pr|grep -i "real time" | tr "[A-Z]" "[a-z]" |awk ' {
if ($1 == "real" && $2 == "time")
{
printf("%s %s", $5, $6)
exit # quit after finding the "real time" string
}
}')
date1=$(echo $ret_str|cut -f 1 -d " ") # date
time1=$(echo $ret_str|cut -f 2 -d " ") # time
date1=$(return_datetime $date1)
# build a time string for the backup time and the current date time
totaltimestr="$date1 $time1 $cut_dt $(date +"%Y-%m-%d %T")"
# and insert it into the database
$DBCOMMAND > /dev/null 2>&1 <<EDS
INSERT INTO remote_values VALUES ("$rem_key", "$totaltimestr");
EDS
|