You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
archzfs/verifier.sh

78 lines
1.9 KiB

#!/bin/bash
DIR="$( cd "$( dirname "$0" )" && pwd )"
set -e
source $DIR/lib.sh
source $DIR/conf.sh
trap 'trap_abort' INT QUIT TERM HUP
trap 'trap_exit' EXIT
usage() {
echo "verifier.sh - Compares repository hashes."
echo
echo "Usage: ./verifier.sh [options]"
echo
echo "Options:"
echo
echo " -h: Show help information."
echo " -d: Show debug info."
echo
echo "Examples:"
echo
echo " verifier.sh -d :: Show debug output."
}
ARGS=("$@")
for (( a = 0; a < $#; a++ )); do
if [[ ${ARGS[$a]} == "-h" ]]; then
usage;
exit 0;
elif [[ ${ARGS[$a]} == "-d" ]]; then
DEBUG=1
fi
done
compute_local_repo_hash() {
# $1: The repository to compute
# Sets LOCAL_REPO_HASH
msg2 "Computing local $1 repository hashes..."
LFILES=$(cd $AZB_REPO_BASEPATH; sha256sum $1/*/*)
debug "Repository hash list:"
debug "$LFILES"
LOCAL_REPO_HASH=$(echo "$LFILES" | sha256sum | cut -f 1 -d' ')
msg2 "Computed hash: $LOCAL_REPO_HASH"
}
compute_remote_repo_hash() {
# $1: The repository to compute
# Sets REMOTE_REPO_HASH
msg2 "Computing remote $1 repository hashes..."
RFILES=$(ssh $AZB_REMOTE_LOGIN "cd webapps/default; sha256sum $1/*/*")
debug "Repository hash list:"
debug "$RFILES"
REMOTE_REPO_HASH=$(echo "$RFILES" | sha256sum | cut -f 1 -d' ')
msg2 "Computed hash: $REMOTE_REPO_HASH"
}
compare_repo() {
# $1: The repo name to compare
compute_local_repo_hash $1
compute_remote_repo_hash $1
if [[ $REMOTE_REPO_HASH != $LOCAL_REPO_HASH ]]; then
return 1
fi
return 0
}
for REPO in 'demz-repo-archiso' 'demz-repo-core'; do
msg "Checking ${REPO}..."
compare_repo $REPO
if [[ $? != 0 ]]; then
error "The database is out of sync, sending notification..."
send_email "$REPO is out of sync!" "$REPO is not in sync!"
fi
msg2 "$REPO is in sync"
done