#!/bin/bash
# Script zur Erstellung einer Konfigurationsdatei für die Datensicherung eines invis-Servers auf eine Sicherungsfestplatte.
# Version 0.8
# (c) 2009,2014,2016 Stefan Schäfer invis-server.org
# License: GPLv3
# Questions: stefan@invis-server.org
# Have a look at wiki.invis-server.org and our mailing lists.

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# Dieses Programm ist Freie Software: Sie können es unter den Bedingungen
# der GNU General Public License, wie von der Free Software Foundation,
# Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren
# veröffentlichten Version, weiterverbreiten und/oder modifizieren.

# Dieses Programm wird in der Hoffnung, dass es nützlich sein wird, aber
# OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite
# Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
# Siehe die GNU General Public License für weitere Details.

# Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
# Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>

# Arbeitsverzeichnis
workingdir="/var/lib/invis-bbu"

# Funktion - Konfigurationsparameter tauschen
changevalues() {
    # Arg1 = Pfad, Arg2 = Datei, Arg3 = sed String
    echo $3 >> /root/test.txt
    cat $1/$2|sed -e "s%$3%g" > $1/$2.new
    mv $1/$2.new $1/$2
}

# Datensicherung einrichten

echo -e "Datensicherung udrdbu wird konfiguriert\n"
echo -e "Mit Hilfe der Kommandos \"vgscan\" und \"lvscan\" können sie die auf Ihrem System vorhandenen LVM Volume-Groups und Logical-Volumes ermitteln.\n"

while [[ $dasivg == "" ]]; do
    read -p "Geben Sie bitte den Namen der Volume-Group ein, in der sich die zu sichernden logical Volumes befinden: " dasivg
done

while [[ $dasilvs == "" ]]; do
    read -p "Geben Sie bitte die Namen der zu sichernden logical Volumes ein. z.B. srv (Mehrere Volume-Namen durch Leerzeichen trennen.): " dasilvs
done

while [[ $admin == "" ]]; do
    read -p "Geben Sie bitte den vollständigen Namen des zuständigen Administrators ein: " admin
done

while [[ $dasimailto == "" ]]; do
    read -p "Geben Sie bitte die Mail-Adresse an, an die Datensicherungsmeldungen geschickt werden sollen: " dasimailto
done

while [[ $dasimailfrom == "" ]]; do
    read -p "Geben Sie bitte die Mail-Adresse an, die als Absender verwendet werden sollen: " dasimailfrom
done

freespace=`pvscan -v 2>&1 |grep free |tr -s " " |cut -d " " -f 10-11`

while [[ $dasisnapsize == "" ]]; do
    read -p "Geben Sie bitte die Größe des Snapshotvolumes an. Die Größe muss größer als die größte zu sichernde Datei und kleiner als $freespace sein. (Angabe xxG): " dasisnapsize
    if [[ ! `echo $dasisnapsize | grep G$` ]]; then
	dasisnapsize=
	echo "Fehlerhafte Größenangabe"
    fi
done

# vorhandene Konfiguration sichern, wenn vorhanden, neue Datei kopieren
path="/etc/invis/"
file="bbudisk.conf"

if [[ -f $path/$file ]]; then
    mv $path/$file $path/$file.bak
fi

cp $workingdir/$file.template $path/$file

strings="volumegroup_einsetzen%$dasivg"
changevalues $path $file "$strings"

strings="volumes_einsetzen%$dasilvs"
changevalues $path $file "$strings"

strings="Heinz_Becker%$admin"
changevalues $path $file "$strings"

strings="mail_to%$dasimailto"
changevalues $path $file "$strings"

strings="mail_from%$dasimailfrom"
changevalues $path $file "$strings"

strings="20G%$dasisnapsize"
changevalues $path $file "$strings"

echo "Konfiguration abgeschlossen"
