Listing 3 compare
#!/bin/ksh
#*******************************************************
# Listing 3:
# File: compare
#
# Description:
#
# This script compares two separate snapshots and generates a report.
#
# Author: John Spurgeon (john.p.spurgeon@intel.com)
#
#*******************************************************
if [ -z "$ENTRAP" ]
then
$(dirname $0)/entrap
exit 0
fi
VERBOSE=$FALSE
SUFFIX=""
while getopts fvh OPTION
do
case "$OPTION"
in
f) SUFFIX=".f" ;;
v) VERBOSE=$TRUE ;;
h) echo "`basename $0` [-av] snapshot1 snapshot2"
exit 0 ;;
\?) exit 1 ;;
esac
done
if [ $(($OPTIND + 1)) -gt "$#" ]
then
echo "[$(basename $0)] Error: Missing one or two snapshot names!" >& 2
exit 1
fi
shift $(($OPTIND - 1))
SNAPSHOT1=$1
SNAPSHOT2=$2
SNAPSHOT1_DIR=$SNAPSHOT_ROOT/$SNAPSHOT1
SNAPSHOT2_DIR=$SNAPSHOT_ROOT/$SNAPSHOT2
#
# Perform the comparison.
#
while read DIR FILE
do
for PATHNAME in $SNAPSHOT1_DIR/$FILE$SUFFIX $SNAPSHOT2_DIR/$FILE$SUFFIX
do
if ! [ -f $PATHNAME ]
then
echo "[$(basename $0)] Error: $PATHNAME does not exist!" >& 2
exit 1
fi
done
diff $SNAPSHOT1_DIR/$FILE$SUFFIX $SNAPSHOT2_DIR/$FILE$SUFFIX | \
awk '$1 == "<" || $1 == ">" {print}' | \
sort -d -k 2,2 > $TEMP_DIR/$FILE$SUFFIX
done < $CONFIG_FILE
#
# Generate the report.
#
echo "Date: `date`"
echo "Comparing $SNAPSHOT1 vs. $SNAPSHOT2"
echo "\nFiltering is turned \c"
if [ -z "$SUFFIX" ]
then
echo "OFF"
else
echo "ON"
fi
while read DIR FILE
do
CHANGES=$FALSE
echo "\nChecking: $DIR\n"
num=$($COUNT_ADDED $TEMP_DIR/$FILE$SUFFIX)
if [ $num -gt 0 ]
then
if [ $num -eq 1 ]
then
echo "$num file has been added"
else
echo "$num files have been added"
fi
if [ $VERBOSE -eq $TRUE ]
then
echo
$LIST_ADDED $TEMP_DIR/$FILE$SUFFIX
echo
fi
CHANGES=$TRUE
fi
num=$($COUNT_DELETED $TEMP_DIR/$FILE$SUFFIX)
if [ $num -gt 0 ]
then
if [ $num -eq 1 ]
then
echo "$num file has been deleted"
else
echo "$num files have been deleted"
fi
if [ $VERBOSE -eq $TRUE ]
then
echo
$LIST_DELETED $TEMP_DIR/$FILE$SUFFIX
echo
fi
CHANGES=$TRUE
fi
num=$($COUNT_CHANGED $TEMP_DIR/$FILE$SUFFIX)
if [ $num -gt 0 ]
then
if [ $num -eq 1 ]
then
echo "$num file has been modified"
else
echo "$num files have been modified"
fi
if [ $VERBOSE -eq $TRUE ]
then
echo
$LIST_CHANGED $TEMP_DIR/$FILE$SUFFIX $SNAPSHOT1 $SNAPSHOT2
echo
fi
CHANGES=$TRUE
fi
if [ "$CHANGES" -eq $FALSE ]
then
echo "No changes"
fi
done < $CONFIG_FILE
#
# Clean up the temporary files.
# BE CAREFULL: Don't do something stupid like "rm -rf /"
#
if [ -n "$TEMP_DIR" ] && [ -d "$TEMP_DIR" ]
then
while read DIR FILE
do
if [ -n "$FILE" ]
then
[ -f $TEMP_DIR/$FILE ] && rm $TEMP_DIR/$FILE
[ -f $TEMP_DIR/$FILE.f ] && rm $TEMP_DIR/$FILE.f
fi
done < $CONFIG_FILE
fi
#!/bin/ksh
|