#!/bin/sh # # This is a shell archive. To extract its contents, # execute this file with /bin/sh to create the file(s): # # README.1st log_full.sh mbp_ontape mbp_ontape.auto # # This shell archive created: Wed Nov 6 16:36:21 EST 2002 # echo "Extracting file README.1st" sed -e 's/^X//' <<\SHAR_EOF > README.1st X############################################################################# X# Module: @(#)README.1st 1.1 (PB) Date: Wed Oct 23 09:11:41 MET 2002 X# Author: Pavel Bohacik X# Origins: X# X# PROGRAM: X# X# USAGE: Description file for utilities mbp_ontape*, log_full.sh X############################################################################# X XUtilities: mbp_ontape, mbp_ontape.auto, log_full.sh X XDescription: X Utilities serve for unattended backup of DB server and DB server logs X to disk X cutting backup to 2GB disk files (only mbp_ontape*!, not logs) X XDevelopment platform: X OS: SCO Open Server 5.x, UnixWare 7.1.1 (you must change options of commands: find,awk,df ) X IDS: 7.x, 9.x X XLanguage: shell script X XNotes: X/zaloha/tape, /zaloha/ltape serve for check, whether symbolic links from onconfig are correct. (/zaloha is directory for backup) XYou need remove flag files if any crash happened (remove them before "oninit" command at startup script) X XExample of crontab of informix: X30 18 * * 0 bin/mbp_ontape 0 X30 18 * * 1-6 bin/mbp_ontape 1 X5 06 * * 0,2-6 bin/mbp_ontape 2 X5 06 * * 1 bin/mbp_ontape 1 SHAR_EOF if [ `wc -c < README.1st` -ne 1232 ] then echo "Lengths do not match -- Bad Copy of README.1st" fi echo "Extracting file log_full.sh" sed -e 's/^X//' <<\SHAR_EOF > log_full.sh X########################################################################### X# X# INFORMIX SOFTWARE, INC. X# X# PROPRIETARY DATA X# X# THIS DOCUMENT CONTAINS TRADE SECRET DATA WHICH IS THE PROPERTY OF X# INFORMIX SOFTWARE, INC. THIS DOCUMENT IS SUBMITTED TO RECIPIENT IN X# CONFIDENCE. INFORMATION CONTAINED HEREIN MAY NOT BE USED, COPIED OR X# DISCLOSED IN WHOLE OR IN PART EXCEPT AS PERMITTED BY WRITTEN AGREEMENT X# SIGNED BY AN OFFICER OF INFORMIX SOFTWARE, INC. X# X# THIS MATERIAL IS ALSO COPYRIGHTED AS AN UNPUBLISHED WORK UNDER X# SECTIONS 104 AND 408 OF TITLE 17 OF THE UNITED STATES CODE. X# UNAUTHORIZED USE, COPYING OR OTHER REPRODUCTION IS PROHIBITED BY LAW. X# X# CCid: %W% %E% %U% X# Created: June 1995 X# Description Automates logical log backup using event alarms from the X# database server. To install this script, add the following X# line to the ONCONFIG file - X# ALARMPROGRAM /etc/log_full.sh X# where is replaced by the full value of X# $INFORMIXDIR X# X##############################################################################/ X############################################################################# X# Module: @(#)log_full.sh 2.4 (PB) Date: Wed Oct 23 09:19:37 MET 2002 X# Author: Pavel Bohacik X# Origins: log_full.sh (C)Informix, Art S. Kagel (IIUG), ??? X# X# PROGRAM: see above X# X# USAGE: see above X############################################################################# Xusage() X{ X cat >&2 <&2 X! X exit 0 X} X XPROG=`basename $0` XUSER_LIST=informix XMONITORING=monitoring X#BACKUP_CMD="onbar -l" XBACKUP_CMD="ontape -a" XEXIT_STATUS=0 X XEVENT_SEVERITY=$1 XEVENT_CLASS=$2 XEVENT_MSG="$3" XEVENT_ADD_TEXT="$4" XEVENT_FILE="$5" X XLOG=$INFORMIXDIR/some_log_file Xecho $* >>${LOG}.log Xexec >$LOG 2>&1 XDATEVAR=`date` X Xcase "$EVENT_CLASS" in X 23) X # onbar assumes no operator is present, X # so all messages are written to the activity X # log and there shouldn't be any output, but X # send everything to /dev/null just in case X X LTAPE_ON=$INFORMIXDIR/.mbp_ltape.on # flag for backup of logs X if [ -f $LTAPE_ON ]; then exit $EXIT_STATUS; fi X trap ' [ rm $LTAPE_ON ] && exit ' 1 2 3 15 X touch $LTAPE_ON X ONTAPE_RM="$INFORMIXDIR/.mbp_ontape.rm" X if [ -f $ONTAPE_RM ]; then rm $LTAPE_ON; exit $EXIT_STATUS; fi X X LOG_LTAPE=$INFORMIXDIR/mbp_ltape.log X LDISKTAPE=/zaloha/ltape X LTAPE=`onstat -c|grep "^LTAPEDEV"|awk -e '{print $2}'` X LTAPE=`ls -l $LTAPE|awk -e '{print $NF}'` X if [ "$LTAPE" != "$LDISKTAPE" ]; then X echo "error not disk tape" >>$LOG X mail -s "$INFORMIXSERVER ontape log error" $USER_LIST $MONITORING < $LOG X rm $LTAPE_ON X exit 4 X fi X X c=1 X for b in $3; do X if [ $c -eq 3 ]; then logno=$b; break; fi X c=`expr $c + 1` X done X touch $LTAPE X chmod 660 $LTAPE X $BACKUP_CMD <$LOG_LTAPE 2>&1 X Xn XEOF X#unattended enter X EXIT_STATUS=$? X mv $LTAPE $LTAPE.$logno X #compress $LTAPE.$logno & X rm $LTAPE_ON X trap 1 2 3 15 X ;; X X# One program is shared by all event alarms. If this ever gets expanded to X# handle more than just archive events, uncomment the following: X *) X# EXIT_STATUS=1 X ;; Xesac X Xif [ $EVENT_SEVERITY -ge 3 ] Xthen X # Severity ATTENTION or better - send email X X # case on EVENT_CLASS to reset EVENT_SEVERITY if necessary... X case $EVENT_CLASS in X 20 ) EVENT_SEVERITY=5 X ;; X 11 ) EVENT_SEVERITY=5 X ;; X 12 ) EVENT_SEVERITY=5 X ;; X 6 ) EVENT_SEVERITY=4 X ;; X esac X X X X X case $EVENT_SEVERITY in X X 3) SEV="WARNING" X sev_msg="WARNING ONLINE EVENT"; X ;; X 4) SEV="SEVERE" X sev_msg="SEVERE ONLINE EVENT"; X ;; X 5) SEV="CRITICAL" X sev_msg="CRITICAL ONLINE EVENT"; X ;; X *) SEV="WARNING" X sev_msg="UNKNOWN ONLINE EVENT - $EVENT_SEVERITY - "; X ;; X esac X X X# Log information X echo "===================================================" X echo $DATEVAR X echo "Server : $INFORMIXSERVER" X echo "Class ID : $EVENT_CLASS" X echo "Severity level : $EVENT_SEVERITY" X echo "Severity msg : $SEV" X echo "Class text : $EVENT_MSG" X echo "Specific msg : $EVENT_ADD_TEXT" X echo "See Also msg : $EVENT_FILE" X echo "===================================================" X echo "\n" X X# check the last occurrence of this EVENT_CLASS X X# check_EVENT_CLASS $EVENT_CLASS X# if [ $? -eq 0 ] X# then X# # last occurrence is over the acceptable time period X# call_alert_program $SEV "$sev_msg\n$EVENT_MSG\n$EVENT_ADD_TEXT\n$EVENT_FILE" X# fi X X mail -s "$INFORMIXSERVER $EVENT_ADD_TEXT" $USER_LIST < $LOG X if [ $EVENT_SEVERITY -ge 4 ] X then X mail -s "$INFORMIXSERVER $EVENT_ADD_TEXT" $MONITORING < $LOG X fi X cat $LOG >> $LOG.log Xfi Xexit $EXIT_STATUS SHAR_EOF if [ `wc -c < log_full.sh` -ne 4768 ] then echo "Lengths do not match -- Bad Copy of log_full.sh" fi echo "Extracting file mbp_ontape" sed -e 's/^X//' <<\SHAR_EOF > mbp_ontape X#!/bin/ksh X############################################################################# X# Module: @(#)mbp_ontape 2.4 (PB) Date: Wed Oct 23 09:16:30 MET 2002 X# Author: Pavel Bohacik X# Origins: X# X# PROGRAM: mbp_ontape provides unattended ontape to disk files X# X# USAGE: mbp_ontape X############################################################################# X Xsave_tape_as() { X mv $TAPE ${TAPE}${LEVEL}.${1} X echo "tape saved as ${TAPE}${LEVEL}.${1}" >>$LOG X} X X. /usr/informix/etc/informix.rc # informix environment XDISKTAPE=/zaloha/tape # default path for TAPEDEV (disk file) XLDISKTAPE=/zaloha/ltape # default path for LTAPEDEV XTAPE=`onstat -c|grep "^TAPEDEV"|awk -e '{print $2}'` # onconfig's TAPEDEV XTAPE=`ls -l $TAPE|awk -e '{print $NF}'` XONTAPE="$INFORMIXDIR/mbp_ontape.out" # output from ontape XONTAPE_RM="$INFORMIXDIR/.mbp_ontape.rm" # flag for rm tape* XLOG="$INFORMIXDIR/mbp_ontape.log" # mbp_ontape's log file XLAST="$INFORMIXDIR/mbp_ontape.last" # last number of disk tape file XLAST_LOG="$LDISKTAPE.last" # last log involved to tape XOK=error XNUMBER=1 XLEVEL=$1 X Xexport DISKTAPE LDISKTAPE TAPE ONTAPE ONTAPE_RM LOG LAST LAST_LOG OK NUMBER LEVEL Xecho $NUMBER >$LAST X Xif [ -z "$1" ]; then echo error usage ; exit 5; fi X Xif [ "$TAPE" != "$DISKTAPE" ]; then X echo "error not disk tape" >>$LOG X mail -s "$INFORMIXSERVER ontape $LEVEL $OK" informix /dev/null X exit 4 Xfi X X Xmbp_ontape.auto | ontape -s >$ONTAPE Xif [ $? -eq 0 ]; then X if [ -s $LAST ]; then X read LAST_NR < $LAST X if [ -f $TAPE ]; then save_tape_as ${LAST_NR}last; fi X fi X OK=OK Xfi X Xecho >>$LOG Xl ${TAPE}* ${LDISKTAPE}* >>$LOG 2>&1 Xecho >>$LOG Xdf -vk >>$LOG Xecho "\n-----------------" >>$LOG Xcat $ONTAPE >>$LOG Xecho "******************************************************************" >>$LOG X Xmail -s "$INFORMIXSERVER ontape $LEVEL $OK" informix /dev/null X Xif [ "$OK" != "OK" ]; then exit 3; fi Xmv ${LAST_LOG}.new ${LAST_LOG} SHAR_EOF if [ `wc -c < mbp_ontape` -ne 1980 ] then echo "Lengths do not match -- Bad Copy of mbp_ontape" fi echo "Extracting file mbp_ontape.auto" sed -e 's/^X//' <<\SHAR_EOF > mbp_ontape.auto X#!/bin/ksh X############################################################################# X# Module: @(#)mbp_ontape.auto 2.6 (PB) Date: Wed Oct 23 09:16:54 MET 2002 X# Author: Pavel Bohacik X# Origins: auto_ontape iiug "Peter Tashkoff" X# X# PROGRAM: mbp_ontape.auto provides unattended ontape to disk files X# X# USAGE: see mbp_ontape X############################################################################# X Xsave_tape_as() { X mv $TAPE ${TAPE}${LEVEL}.${1} X echo "tape saved as ${TAPE}${LEVEL}.${1}" >>$LOG X} X Xnew_tape() { X touch $TAPE X chmod 660 $TAPE X echo "\n mounted new tape $1\n" >>$LOG X} X X Xif [ -z "$LEVEL" -o -z "$TAPE" ]; then "echo error usage" ; exit 5; fi X X Xecho "\n==================================================================\n" >>$LOG Xdate >>$LOG X Xtrap ' [ rm $ONTAPE_RM ] && exit ' 1 2 3 15 Xtouch $ONTAPE_RM X XLDISK=`dirname ${LDISKTAPE}` XLTAPE=`basename ${LDISKTAPE}` Xfind $LDISK -name "${LTAPE}.*" ! -newer ${LAST_LOG} -level 0 -exec rm -f {} \; Xsleep 60 X Xrm -f ${TAPE}* Xsleep 180 Xdf -vk >>$LOG X Xnew_tape $NUMBER Xtouch ${LAST_LOG}.new Xl ${TAPE}* ${LDISKTAPE}* >>$LOG Xecho >>$LOG Xrm $ONTAPE_RM Xtrap 1 2 3 15 X Xecho "\n# ontape level $LEVEL started on $TAPE\n" >> $LOG Xecho $LEVEL Xecho X X Xwhile : Xdo X sleep 10 X a=`tail -1 $ONTAPE` X if [ "$OLD_a" = "$a" ]; then sleep 60; continue; fi X OLD_a=$a X if [ -z "$a" ]; then sleep 60; continue; fi X set $a X echo "\n$a" >>$LOG X X case $2 in X mount) if [ $4 -gt $NUMBER ]; then X save_tape_as ${NUMBER} X NUMBER=$4 X echo "$4" > $LAST X new_tape $4 X echo X fi ;; X over.) # This check may not be struck as the script will die when ontape finishes. X if [ -f $TAPE ]; then save_tape_as ${NUMBER}last; fi X >$LAST X exit 0 ;; X esac Xdone SHAR_EOF if [ `wc -c < mbp_ontape.auto` -ne 1752 ] then echo "Lengths do not match -- Bad Copy of mbp_ontape.auto" fi echo "Done." exit 0