Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash -x
- # +-----------------------------------------------------------------------------------------+
- # | Dit script bepaald welke node live is, en doet vervolgens de andere node backupen. |
- # | We doen een arping om het mac adres te bepalen en gebruiken dit om de actieve node te |
- # | En draaien een backup van de andere node (minder belasting van de fileserver en dus |
- # | beter performance van het forum. |
- # +-----------------------------------------------------------------------------------------+
- # Global variables:
- PATH='/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin'
- SCRIPT_PATH="${0}"
- ARGS="${#}"
- ARG1="${1}"
- NODE1='1.1.1.1'
- CONF1='/etc/rsnapshot/rsnapshot-data-node1.conf'
- NODE2='1.1.2.2'
- CONF1='/etc/rsnapshot/rsnapshot-data-node2.conf'
- CLUSTERIP='1.1.1.1'
- # Functions:
- # exit function
- function die()
- {
- echo "${SCRIPT_PATH}:\n${1}"
- exit 2
- }
- # Shows usage function.
- function fShowUsage()
- {
- echo "Usage: ${SCRIPT_PATH}"
- exit 0
- }
- # check for.......
- function fCheck()
- {
- # script depends on:
- [ -x /usr/bin/arping ] || die "This script depends on Arping"
- # user must be root:
- [ "$(whoami)" = root ] || die "User must be root!"
- # check for arguments:
- [ "${ARGS}" = '1' ] || fShowUsage
- return 0
- }
- # The main function.
- function fMain()
- {
- case "${ARG1}"
- in
- usage)
- fUsage
- ;;
- daily)
- fBackup "daily"
- ;;
- hourly)
- fBackup "weekly"
- ;;
- monthly)
- fBackup "monthly"
- ;;
- *)
- fUsage
- ;;
- esac
- return 0
- }
- # the backup function
- function fBackup()
- {
- # get arguments
- if [ "${1}" = 'daily' ] ; then
- BACKUP='daily'
- elif [ "${2}" = 'weekly' ]
- BACKUP='weekly'
- elif [ "${ARG1}" = 'monthly' ]
- BACKUP='monthly'
- else
- fUsage
- fi
- # get mac from first and second node:
- local MAC1="$( arping -f ${NODE1} | grep 'Unicast reply from' | awk '{print $5}' | tr -d "[]" )"
- local MAC2="$( arping -f ${NODE2} | grep 'Unicast reply from' | awk '{print $5}' | tr -d "[]" )"
- # get cluster node
- local CLUSTERMAC="$( arping -f ${CLUSTERIP} | grep 'Unicast reply from' | awk '{print $5}' | tr -d "[]" )"
- # do the magic:
- if [ "${CLUSTERMAC}" = ${MAC1} ] ; then
- CONF="${CONF2}"
- NODE="${NODE2}"
- elif [ "${CLUSTERMAC}" = ${MAC2} ]
- CONF="${CONF1}"
- NODE="${NODE1}"
- fi
- # backup :
- { /usr/bin/rsnapshot -c "${CONF}" "${BACKUP}" > /dev/null 2>&1; } || die "Failed to backup ${NODE}"
- return 0
- }
- # check environment:
- fCheck
- # Start the program:
- fMain "${@}"
- # Exit with previous return code:
- exit "${?}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement