From 42cb02e3874791d246ec05501139f006dac35768 Mon Sep 17 00:00:00 2001 From: Eric Loyd Date: Wed, 18 Sep 2019 11:25:29 -0400 Subject: [PATCH] First stage of failovers --- failover/failover.sh | 42 ++++ failover/restore_xi.sh | 422 +++++++++++++++++++++++++++++++++++++++++ failover/rsync_xi.sh | 263 +++++++++++++++++++++++++ 3 files changed, 727 insertions(+) create mode 100755 failover/failover.sh create mode 100755 failover/restore_xi.sh create mode 100755 failover/rsync_xi.sh diff --git a/failover/failover.sh b/failover/failover.sh new file mode 100755 index 0000000..324a493 --- /dev/null +++ b/failover/failover.sh @@ -0,0 +1,42 @@ +#!/bin/sh +# +# Nagios XI failover for Princeton University +# +# Initial version written by: +# Eric Loyd (eloyd@everwatch.global) +# EverWatch Global, Inc. + +PATH=/usr/sbin:/sbin:/usr/bin:/bin + +primary="nagiosxi-p.princeton.edu" +secondary="nagiosxi-f.princeton.edu" + +hostname=`/bin/hostname` + +while [ -n "$1" ]; do + case "$1" in + -H) hostname="$2"; shift 2;; + *) shift 1;; + esac +done + +[ -z "$hostname" ] && echo "Invalid hostname." && exit 2 + +do_nothing() { + echo "We are not the primary or secondary. Doing nothing." + exit +} + +do_primary() { + echo "We are the primary. Creating package to send to secondary." +} + +do_secondary() { + echo "We are the secondary. Expanding package from the primary." +} + +case "$hostname" in + $primary) do_primary;; + $secondary) do_secondary;; + *) do_nothing +esac diff --git a/failover/restore_xi.sh b/failover/restore_xi.sh new file mode 100755 index 0000000..a3d1adc --- /dev/null +++ b/failover/restore_xi.sh @@ -0,0 +1,422 @@ +#!/bin/bash +# +# Restores a Full Backup of Nagios XI +# Copyright (c) 2008-2018 Nagios Enterprises, LLC. All rights reserved. +# + +# Change this password if your root password is different than "nagiosxi" +# MySQL root password +themysqlpass="nagiosxi" + +# Make sure we have the backup file +if [ $# != 1 ]; then + echo "Usage: $0 " + echo "This script restores your XI system using a previously made Nagios XI backup file." + exit 1 +fi +backupfile=$1 + +BASEDIR=/usr/local/nagiosxi/scripts +SPECIAL_BACKUP=0 + +# Import Nagios XI and xi-sys.cfg config vars +. $BASEDIR/../var/xi-sys.cfg +eval $(php $BASEDIR/import_xiconfig.php) + +# Must be root +me=`whoami` +if [ $me != "root" ]; then + echo "You must be root to run this script." + exit 1 +fi + +rootdir=/store/backups/nagiosxi + +############################## +# MAKE SURE BACKUP FILE EXIST +############################## +if [ ! -f $backupfile ]; then + echo "Unable to find backup file $backupfile!" + exit 1 +fi + +# Restore just needs to restore the MySQL stuff. Everything else was shipped over via rsync +## Look inside the (nested) tarball to see what architecture the nagios +## executable is +#if [ $backupfile == "/store/backups/nagiosxi-demo.tar.gz" ];then +#backuparch="x86_64" +#else +#backuparch=$(eval $(echo $(tar -xzOf $backupfile $(basename $backupfile .tar.gz)/nagiosxi.tar.gz | tar -xzOf - usr/local/nagiosxi/var/xi-sys.cfg |cat|grep ^arch\=));echo $arch) +# +#fi +#arch=$(uname -m) +#case $arch in +# i*86 ) arch="i686" ;; +# x86_64 ) arch="x86_64" ;; +# * ) echo "Error detecting architecture."; exit 1 +#esac +# +#if [ "$arch" != "$backuparch" ]; then +# echo "WARNING: you are trying to restore a $backuparch backup on a $arch system" +# echo " Compiled plugins and other binaries will NOT be restored." +# echo +# read -r -p "Are you sure you want to continue? [y/N] " ok +# +# case "$ok" in +# Y | y ) : ;; +# * ) exit 1 +# esac +#fi +# +#backupdist=$(eval $(echo $(tar -xzOf $backupfile $(basename $backupfile .tar.gz)/nagiosxi.tar.gz | tar -xzOf - usr/local/nagiosxi/var/xi-sys.cfg |cat|grep ^dist\=));echo $dist) +# +#if [ "$dist" != "$backupdist" ]; then +# SPECIAL_BACKUP=1 +# +# echo "WARNING: you are trying to restore a $backupdist backup on a $dist system" +# echo " Compiled plugins and other binaries as well as httpd configurations" +# echo " will NOT be restored." +# echo "" +# echo " You will need to re-download the Nagios XI tarball, and re-install" +# echo " the subcomponents for this system. More info here:" +# echo " https://assets.nagios.com/downloads/nagiosxi/docs/Backing-Up-And-Restoring-Nagios-XI.pdf" +# echo "" +# read -r -p "Are you sure you want to continue? [y/N] " ok +# +# case "$ok" in +# Y | y ) : ;; +# * ) exit 1 +# esac +#fi + +############################## +# MAKE TEMP RESTORE DIRECTORY +############################## +#ts=`echo $backupfile | cut -d . -f 1` +ts=`date +%s` +echo "TS=$ts" +mydir=${rootdir}/${ts}-restore +mkdir -p $mydir +if [ ! -d $mydir ]; then + echo "Unable to create restore directory $mydir!" + exit 1 +fi + + +############################## +# UNZIP BACKUP +############################## +echo "Extracting backup to $mydir..." +cd $mydir +tar xzfps $backupfile + +# Change to subdirectory +cd `ls` + +# Make sure we have some directories here... +backupdir=`pwd` +echo "In $backupdir..." +#if [ ! -f nagiosxi.tar.gz ]; then +# echo "Unable to find files to restore in $backupdir" +# exit 1 +#fi + +echo "Backup files look okay. Preparing to restore..." + + +############################## +# SHUTDOWN SERVICES +############################## +echo "Shutting down services..." +$BASEDIR/manage_services.sh stop nagios +$BASEDIR/manage_services.sh stop ndo2db +$BASEDIR/manage_services.sh stop npcd + + +############################## +# RESTORE DIRS +############################## +rootdir=/ +#echo "Restoring directories to ${rootdir}..." +# +## Nagios Core +#echo "Restoring Nagios Core..." +#if [ "$arch" == "$backuparch" ] && [ $SPECIAL_BACKUP -eq 0 ]; then +# rm -rf /usr/local/nagios +# cd $rootdir && tar xzf $backupdir/nagios.tar.gz +#else +# rm -rf /usr/local/nagios/etc /usr/local/nagios/share /usr/local/nagios/var +# cd $rootdir && tar --exclude="usr/local/nagios/bin" --exclude="usr/local/nagios/sbin" --exclude="usr/local/nagios/libexec" -xzf $backupdir/nagios.tar.gz +# cd $rootdir && tar --wildcards 'usr/local/nagios/libexec/*.*' -xzf $backupdir/nagios.tar.gz +#fi +# +## Restore ramdisk if it exists +#if [ -f "$backupdir/ramdisk.nagios" ]; then +# echo "Updating ramdisk configuration..." +# cp $backupdir/ramdisk.nagios /etc/sysconfig/nagios +#fi +# +## Nagios XI +#echo "Restoring Nagios XI..." +#if [ "$arch" == "$backuparch" ] && [ $SPECIAL_BACKUP -eq 0 ]; then +# rm -rf /usr/local/nagiosxi +# cd $rootdir && tar xzfps $backupdir/nagiosxi.tar.gz +#else +# mv $BASEDIR/../var/xi-sys.cfg /tmp/xi-sys.cfg +# mv $BASEDIR/../var/certs /tmp/certs +# mv $BASEDIR/../var/keys /tmp/keys +# +# rm -rf /usr/local/nagiosxi +# cd $rootdir && tar xzfps $backupdir/nagiosxi.tar.gz +# +# cp -r /tmp/xi-sys.cfg $BASEDIR/../var/xi-sys.cfg +# rm -f /tmp/xi-sys.cfg +# +# # Check for certs +# mkdir -p $BASEDIR/../var/certs +# cp -r /tmp/certs $BASEDIR/../var/ +# +# rm -rf /tmp/certs +# +# # Check for keys +# mkdir -p $BASEDIR/../var/keys +# cp -r /tmp/keys $BASEDIR/../var/ +# +# rm -rf /tmp/keys +#fi +# +## NagiosQL +#if [ -d "/var/www/html/nagiosql" ]; then +# +# echo "Restoring NagiosQL..." +# rm -rf /var/www/html/nagiosql +# cd $rootdir && tar xzfps $backupdir/nagiosql.tar.gz +# +# # NagiosQL etc +# echo "Restoring NagiosQL backups..." +# rm -rf /etc/nagiosql +# cd $rootdir && tar xzfps $backupdir/nagiosql-etc.tar.gz +# +#fi +# +## NRDP +#echo "Restoring NRDP backups..." +#rm -rf /usr/local/nrdp +#cd $rootdir && tar xzfps $backupdir/nrdp.tar.gz +# +## MRTG +#if [ -f $backupdir/mrtg.tar.gz ]; then +# echo "Restoring MRTG..." +# rm -rf /var/lib/mrtg +# cd $rootdir && tar xzfps $backupdir/mrtg.tar.gz +# cp -rp $backupdir/conf.d /etc/mrtg/ +# cp -p $backupdir/mrtg.cfg /etc/mrtg/ +# chown $apacheuser:$nagiosgroup /etc/mrtg/conf.d /etc/mrtg/mrtg.cfg +#fi +#cd $backupdir +# +## SNMP configs and MIBS +#if [ -f $backupdir/etc-snmp.tar.gz ]; then +# echo "Restoring SNMP configuration files..." +# cd $rootdir && tar xzfps $backupdir/etc-snmp.tar.gz +#fi +#if [ -f $backupdir/usr-share-snmp.tar.gz ]; then +# echo "Restoring SNMP MIBs..." +# cd $rootdir && tar xzfps $backupdir/usr-share-snmp.tar.gz +#fi +# +# Nagvis +#if [ -f $backupdir/nagvis.tar.gz ]; then +# echo "Restoring Nagvis backups..." +# rm -rf /usr/local/nagvis +# cd $rootdir && tar xzfps $backupdir/nagvis.tar.gz +# chown -R $apacheuser:$nagiosgroup /usr/local/nagvis +#fi +# +## nagios user home +#if [ -f $backupdir/home-nagios.tar.gz ]; then +# echo "Restoring nagios home dir..." +# cd $rootdir && tar xzfps $backupdir/home-nagios.tar.gz +#fi + +# RE-IMPORT ALL XI CFG VARS +. $BASEDIR/../var/xi-sys.cfg +php $BASEDIR/import_xiconfig.php > $BASEDIR/config.dat +. $BASEDIR/config.dat +rm -rf $BASEDIR/config.dat + +# Overwrite the mysqlpass with the hardcoded one at the top +mysqlpass="$themysqlpass" + +############################## +# RESTORE DATABASES +############################## +echo "Restoring MySQL databases..." +if [[ "$cfg__db_info__ndoutils__dbserver" == *":"* ]]; then + ndoutils_dbport=`echo "$cfg__db_info__ndoutils__dbserver" | cut -f2 -d":"` + ndoutils_dbserver=`echo "$cfg__db_info__ndoutils__dbserver" | cut -f1 -d":"` +else + ndoutils_dbport='3306' + ndoutils_dbserver="$cfg__db_info__ndoutils__dbserver" +fi +mysql -h "$ndoutils_dbserver" --port="$ndoutils_dbport" -u root --password=$mysqlpass < $backupdir/mysql/nagios.sql +res=$? +if [ $res != 0 ]; then + echo "Error restoring MySQL database 'nagios' - check the password in this script!" + exit; +fi + +if [[ "$cfg__db_info__nagiosql__dbserver" == *":"* ]]; then + nagiosql_dbport=`echo "$cfg__db_info__nagiosql__dbserver" | cut -f2 -d":"` + nagiosql_dbserver=`echo "$cfg__db_info__nagiosql__dbserver" | cut -f1 -d":"` +else + nagiosql_dbport='3306' + nagiosql_dbserver="$cfg__db_info__nagiosql__dbserver" +fi +mysql -h "$nagiosql_dbserver" --port="$nagiosql_dbport" -u root --password=$mysqlpass < $backupdir/mysql/nagiosql.sql +res=$? +if [ $res != 0 ]; then + echo "Error restoring MySQL database 'nagiosql' - check the password in this script!" + exit; +fi + +# Only restore PostgresQL if we are still using it +if [ "$cfg__db_info__nagiosxi__dbtype" == "pgsql" ]; then + + service postgresql initdb &>/dev/null || true + + echo "Restoring Nagios XI PostgresQL database..." + if [ -f /var/lib/pgsql/data/pg_hba.conf ]; then + pghba="/var/lib/pgsql/data/pg_hba.conf" + cp -pr $pghba $pghba.old + else + #Ubuntu/Debian + pghba=$(find /etc/postgresql -name "*pg_hba.conf") + cp -pr $pghba $pghba.old + fi + echo "local all all trust +host all all 127.0.0.1/32 trust +host all all ::1/128 trust" > $pghba + + $BASEDIR/manage_services.sh start postgresql + + sudo -u postgres psql -c "create user nagiosxi with password 'n@gweb';" + sudo -u postgres psql -c "create database nagiosxi owner nagiosxi;" + + $BASEDIR/manage_services.sh restart postgresql + + # Sleep a bit (required so Postgres finishes startup before we connect again) + echo "Sleeping for a few seconds (please wait)..." + sleep 7 + + psql -U nagiosxi nagiosxi < $backupdir/pgsql/nagiosxi.sql + res=$? + if [ $res != 0 ]; then + echo "Error restoring PostgresQL database 'nagiosxi' !" + exit; + fi + $BASEDIR/manage_services.sh restart postgresql + if [ "$dist" == "el7" ] || [ "$dist" == "el8" ]; then + systemctl enable postgresql.service + elif [[ "$distro" == "Ubuntu" ]] || [[ "$distro" == "Debian" ]]; then + update-rc.d postgresql enable + else + chkconfig postgresql on + fi + # Remove nagiosxi db from mysql if postgres is used instead + if [[ "$cfg__db_info__nagiosql__dbserver" == *":"* ]]; then + nagiosql_dbport=`echo "$cfg__db_info__nagiosql__dbserver" | cut -f2 -d":"` + nagiosql_dbserver=`echo "$cfg__db_info__nagiosql__dbserver" | cut -f1 -d":"` + else + nagiosql_dbport='3306' + nagiosql_dbserver="$cfg__db_info__nagiosql__dbserver" + fi + mysql -h "$nagiosql_dbserver" --port="$nagiosql_dbport" -u root --password=$mysqlpass < "DROP TABLE IF EXISTS nagiosxi;" +else + echo "Restoring Nagios XI MySQL database..." + if [[ "$cfg__db_info__nagiosxi__dbserver" == *":"* ]]; then + nagiosxi_dbport=`echo "$cfg__db_info__nagiosxi__dbserver" | cut -f2 -d":"` + nagiosxi_dbserver=`echo "$cfg__db_info__nagiosxi__dbserver" | cut -f1 -d":"` + else + nagiosxi_dbport='3306' + if [ "x$cfg__db_info__nagiosxi__dbserver" == "x" ]; then + nagiosxi_dbserver="localhost" + else + nagiosxi_dbserver="$cfg__db_info__nagiosxi__dbserver" + fi + fi + mysql -h "$nagiosxi_dbserver" --port="$nagiosxi_dbport" -u root --password=$mysqlpass < $backupdir/mysql/nagiosxi.sql + res=$? + if [ $res != 0 ]; then + echo "Error restoring MySQL database 'nagiosxi' !" + exit; + fi +fi + +echo "Restarting database servers..." +$BASEDIR/manage_services.sh restart mysqld + +############################### +## RESTORE CRONJOB ENTRIES +############################### +#echo "Restoring Apache cronjobs..." +#if [[ "$distro" == "Ubuntu" ]] || [[ "$distro" == "Debian" ]]; then +# cp $backupdir/cron/apache /var/spool/cron/crontabs/$apacheuser +#else +# cp $backupdir/cron/apache /var/spool/cron/apache +#fi + +############################## +# RESTORE SUDOERS +############################## +# Not necessary + +############################### +## RESTORE LOGROTATE +############################### +#echo "Restoring logrotate config files..." +#cp -rp $backupdir/logrotate/nagiosxi /etc/logrotate.d + +############################### +## RESTORE APACHE CONFIG FILES +############################### +#if [ $SPECIAL_BACKUP -eq 0 ]; then +# echo "Restoring Apache config files..." +# cp -rp $backupdir/httpd/nagios.conf $httpdconfdir +# cp -rp $backupdir/httpd/nagiosxi.conf $httpdconfdir +# cp -rp $backupdir/httpd/nagiosmobile.conf $httpdconfdir +# cp -rp $backupdir/httpd/nagvis.conf $httpdconfdir +# cp -rp $backupdir/httpd/nrdp.conf $httpdconfdir +# if [ -d "/etc/apache2/sites-available" ]; then +# cp -rp $backupdir/httpd/default-ssl.conf /etc/apache2/sites-available +# else +# cp -rp $backupdir/httpd/ssl.conf $httpdconfdir +# fi +#else +# echo "Skipping Apache config files restoration" +#fi + +############################## +# RESTART SERVICES +############################## +$BASEDIR/manage_services.sh restart httpd +$BASEDIR/manage_services.sh start npcd +$BASEDIR/manage_services.sh start ndo2db +$BASEDIR/manage_services.sh start nagios + +############################## +# DELETE TEMP RESTORE DIRECTORY +############################## +rm -rf $mydir + +############################## +# DELETE forceinstall FILE +############################## +rm -f /tmp/nagiosxi.forceinstall + +echo " " +echo "===============" +echo "RESTORE COMPLETE" +echo "===============" + +exit 0 diff --git a/failover/rsync_xi.sh b/failover/rsync_xi.sh new file mode 100755 index 0000000..d696d26 --- /dev/null +++ b/failover/rsync_xi.sh @@ -0,0 +1,263 @@ +#!/bin/bash +# +# Creates a Full Backup of Nagios XI +# Copyright (c) 2011-2018 Nagios Enterprises, LLC. All rights reserved. +# + +BASEDIR=$(dirname $(readlink -f $0)) +BASEDIR=/usr/local/nagiosxi/scripts +SBLOG="/usr/local/nagiosxi/var/components/scheduledbackups.log" +ts=`date +%s` + +# Import Nagios XI and xi-sys.cfg config vars +. $BASEDIR/../var/xi-sys.cfg +eval $(php $BASEDIR/import_xiconfig.php) + +############################### +# USAGE / HELP +############################### +usage () { + echo "" + echo "Use this script to backup Nagios XI." + echo "" + echo " -n | --name Set the name of the backup minus the .tar.gz" + echo " -p | --prepend Prepend a string to the .tar.gz name" + echo " -a | --append Append a string to the .tar.gz name" + echo " -d | --directory Change the directory to store the compressed backup" + echo "" +} + +############################### +# ADDING LOGIC FOR NEW BACKUPS +############################### +while [ -n "$1" ]; do + case "$1" in + -h | --help) + usage + exit 0 + ;; + -n | --name) + fullname=$2 + ;; + -p | --prepend) + prepend=$2"." + ;; + -a | --append) + append="."$2 + ;; + -d | --directory) + rootdir=$2 + ;; + esac + shift +done + +# Restart nagios to forcibly update retention.dat +$BASEDIR/manage_services.sh restart nagios +sleep 10 + +if [ -z $rootdir ]; then + rootdir="/store/backups/nagiosxi" +fi + +# Move to root dir to store backups +cd $rootdir + +############################# +# SET THE NAME & TIME +############################# +name=$fullname + +if [ -z $fullname ]; then + name=$prepend$ts$append +fi + +# Get current Unix timestamp as name +if [ -z $name ]; then + name=$ts +fi + +# My working directory +mydir=$rootdir/$name + +# Make directory for this specific backup +mkdir -p $mydir + +############################## +# BACKUP DIRS +############################## + + +rsync_opts="-avun --delete --delete-after" +do_rsync() { + echo rsync $rsync_opts $1 secondary:${1} +} + +# Only backup NagiosQL if it exists +if [ -d "/var/www/html/nagiosql" ]; then + echo "Backing up NagiosQL..." + do_rsync /var/www/html/nagiosql + do_rsync /etc/nagiosql +fi + +echo "Backing up Nagios Core..." +do_rsync /usr/local/nagios + +# Backup ramdisk if it exists +if [ -f "/etc/sysconfig/nagios" ]; then + echo "Copying ramdisk configuration..." + do_rsync /etc/sysconfig/nagios +fi + +echo "Backing up Nagios XI..." +do_rsync /usr/local/nagiosxi + +echo "Backing up MRTG..." +do_rsync /var/lib/mrtg +do_rsync /etc/mrtg/mrtg.cfg +do_rsync /etc/mrtg/conf.d + +# SNMP configs and MIBS +echo "Backing up the SNMP directories" +do_rsync /etc/snmp +do_rsync /usr/share/snmp + +echo "Backing up NRDP..." +do_rsync /usr/local/nrdp + +echo "Backing up Nagvis..." +do_rsync /usr/local/nagvis + +echo "Backing up nagios user home dir..." +do_rsync /home/nagios + +############################## +# BACKUP DATABASES +############################## +echo "Backing up MySQL databases..." +mkdir -p $mydir/mysql +if [[ "$cfg__db_info__ndoutils__dbserver" == *":"* ]]; then + ndoutils_dbport=`echo "$cfg__db_info__ndoutils__dbserver" | cut -f2 -d":"` + ndoutils_dbserver=`echo "$cfg__db_info__ndoutils__dbserver" | cut -f1 -d":"` +else + ndoutils_dbport='3306' + ndoutils_dbserver="$cfg__db_info__ndoutils__dbserver" +fi +mysqldump -h "$ndoutils_dbserver" --port="$ndoutils_dbport" -u $cfg__db_info__ndoutils__user --password="$cfg__db_info__ndoutils__pwd" --add-drop-database -B $cfg__db_info__ndoutils__db > $mydir/mysql/nagios.sql +res=$? +if [ $res != 0 ]; then + echo "Error backing up MySQL database 'nagios' - check the password in this script!" | tee -a $SBLOG + rm -r $mydir + exit $res; +fi +if [[ "$cfg__db_info__nagiosql__dbserver" == *":"* ]]; then + nagiosql_dbport=`echo "$cfg__db_info__nagiosql__dbserver" | cut -f2 -d":"` + nagiosql_dbserver=`echo "$cfg__db_info__nagiosql__dbserver" | cut -f1 -d":"` +else + nagiosql_dbport='3306' + nagiosql_dbserver="$cfg__db_info__nagiosql__dbserver" +fi +mysqldump -h "$nagiosql_dbserver" --port="$nagiosql_dbport" -u $cfg__db_info__nagiosql__user --password="$cfg__db_info__nagiosql__pwd" --add-drop-database -B $cfg__db_info__nagiosql__db > $mydir/mysql/nagiosql.sql +res=$? +if [ $res != 0 ]; then + echo "Error backing up MySQL database 'nagiosql' - check the password in this script!" | tee -a $SBLOG + rm -r $mydir + exit $res; +fi + +# Only backup PostgresQL if we are still using it +if [ $cfg__db_info__nagiosxi__dbtype == "pgsql" ]; then + echo "Backing up PostgresQL databases..." + mkdir -p $mydir/pgsql + if [ -z $cfg__db_info__nagiosxi__dbserver ]; then + cfg__db_info__nagiosxi__dbserver="localhost" + fi + pg_dump -h $cfg__db_info__nagiosxi__dbserver -c -U $cfg__db_info__nagiosxi__user $cfg__db_info__nagiosxi__db > $mydir/pgsql/nagiosxi.sql + res=$? + if [ $res != 0 ]; then + echo "Error backing up PostgresQL database 'nagiosxi' !" | tee -a $SBLOG + rm -r $mydir + exit $res; + fi +else + if [[ "$cfg__db_info__nagiosxi__dbserver" == *":"* ]]; then + nagiosxi_dbport=`echo "$cfg__db_info__nagiosxi__dbserver" | cut -f2 -d":"` + nagiosxi_dbserver=`echo "$cfg__db_info__nagiosxi__dbserver" | cut -f1 -d":"` + else + nagiosxi_dbport='3306' + nagiosxi_dbserver="$cfg__db_info__nagiosxi__dbserver" + fi + mysqldump -h "$nagiosxi_dbserver" --port="$nagiosxi_dbport" -u $cfg__db_info__nagiosxi__user --password="$cfg__db_info__nagiosxi__pwd" --add-drop-database -B $cfg__db_info__nagiosxi__db > $mydir/mysql/nagiosxi.sql + res=$? + if [ $res != 0 ]; then + echo "Error backing up MySQL database 'nagiosxi' - check the password in this script!" | tee -a $SBLOG + rm -r $mydir + exit $res; + fi +fi + +############################## +# BACKUP CRONJOB ENTRIES +############################## +echo "Backing up cronjobs for Apache..." +if [[ "$distro" == "Ubuntu" ]] || [[ "$distro" == "Debian" ]]; then + do_rsync /var/spool/cron/crontabs/$apacheuser +else + do_rsync /var/spool/cron/apache +fi + +############################## +# BACKUP SUDOERS +############################## +# Not necessary + +############################## +# BACKUP LOGROTATE +############################## +echo "Backing up logrotate config files..." +do_rsync /etc/logrotate.d/nagiosxi + +############################## +# BACKUP APACHE CONFIG FILES +############################## +echo "Backing up Apache config files..." +do_rsync $httpdconfdir/nagios.conf +do_rsync $httpdconfdir/nagiosxi.conf +do_rsync $httpdconfdir/nagiosmobile.conf +do_rsync $httpdconfdir/nagvis.conf +do_rsync $httpdconfdir/nrdp.conf + +if [ -d "/etc/apache2/sites-available" ]; then + do_rsync /etc/apache2/sites-available/default-ssl.conf +else + do_rsync $httpdconfdir/ssl.conf +fi + +############################## +# COMPRESS BACKUP +############################## +echo "Compressing backup..." +tar czfp $name.tar.gz $name +rm -rf $name + +# Change ownership +chown $nagiosuser:$nagiosgroup $name.tar.gz + +if [ -s $name.tar.gz ];then + + echo " " + echo "===============" + echo "BACKUP COMPLETE" + echo "===============" + echo "Backup stored in $rootdir/$name.tar.gz" + + exit 0; +else + echo " " + echo "===============" + echo "BACKUP FAILED" + echo "===============" + echo "File was not created at $rootdir/$name.tar.gz" + rm -r $mydir + exit 1; +fi