Files

225 lines
14 KiB
Bash

function mysql_tool ()
{
while :
do
PS3='Please enter your choice: '
echo "Press (1) fuer Datenbank Pruefung."
echo "Press (2) fuer Datenbank Dump."
echo "Press (3) fuer Datenbank Drop."
echo "Press (4) fuer Datenbank Restore."
echo "Press (5) fuer Backup download."
echo "Press (6) fuer Datenbank zusammen mergen."
echo "Press (q) fuer QUIT."
read -n1 wahl
echo ""
if [ "$wahl" == "q" ]
then
break
fi
case $wahl in
"1")
echo "Datenbank Name eingeben:"
read db_name
echo "Datenbank-Version MySQL 8:[y/n]:"
read -n1 db_ver
echo ""
db_host=localhost
read -s -p "Datenbank Passwort:" MYSQL_PWD
if [ "$db_ver" == "y" ]
then
db_host=$(awk '/mysql80.local/ {print $1}' /etc/hosts)
fi
echo [client] > $HOME/tmp/.my.cnf
echo "host=$db_host" >> $HOME/tmp/.my.cnf
echo "port=3307" >> $HOME/tmp/.my.cnf
echo "user=$db_name" >> $HOME/tmp/.my.cnf
echo "password=$MYSQL_PWD" >> $HOME/tmp/.my.cnf
echo ""
echo "Starte die Pruefung der Datenbank $db_name."
mysqlcheck --defaults-extra-file="$HOME/tmp/.my.cnf" -c --all-databases
rm $HOME/tmp/.my.cnf
;;
"2")
echo "Datenbank Name eingeben:"
read db_name
echo "Datenbank-Version MySQL 8:[y/n]:"
read -n1 db_ver
echo ""
db_host=localhost
read -s -p "Datenbank Passwort:" MYSQL_PWD
if [ "$db_ver" == "y" ]
then
db_host=$(awk '/mysql80.local/ {print $1}' /etc/hosts)
fi
echo [client] > $HOME/tmp/.my.cnf
echo "host=$db_host" >> $HOME/tmp/.my.cnf
echo "port=3307" >> $HOME/tmp/.my.cnf
echo "user=$(echo "$db_name"|awk -F/ '{print $NF}'|awk -F_ '{print $1}')" >> $HOME/tmp/.my.cnf
echo "password=$MYSQL_PWD" >> $HOME/tmp/.my.cnf
echo ""
echo "Zielverzeichnis eingeben:"
echo "Default = html"
read target_folder
if [ ! -n "target_folder" ]
then
target_folder=html
fi
echo "Starte einen Datenbank Dump fuer Datenbank $db_name nach $target_folder."
mysqldump --defaults-extra-file=$HOME/tmp/.my.cnf $db_name | gzip > "$HOME/$target_folder/$db_name$(date +_%M-%H-%d-%m-%Y).sql.gz"
rm $HOME/tmp/.my.cnf
;;
"3")
echo "Datenbank Name eingeben:"
read db_name
echo "Datenbank-Version MySQL 8:[y/n]:"
read -n1 db_ver
echo ""
db_host=localhost
read -s -p "Datenbank Passwort:" MYSQL_PWD
if [ "$db_ver" == "y" ]
then
db_host=$(awk '/mysql80.local/ {print $1}' /etc/hosts)
fi
echo [client] > $HOME/tmp/.my.cnf
echo "host=$db_host" >> $HOME/tmp/.my.cnf
echo "port=3307" >> $HOME/tmp/.my.cnf
echo "user=$db_name" >> $HOME/tmp/.my.cnf
echo "password=$MYSQL_PWD" >> $HOME/tmp/.my.cnf
echo ""
echo "Starte drop fuer Datenbank $db_name."
mysql --defaults-extra-file="$HOME/tmp/.my.cnf" -e "SHOW TABLES FROM $db_name"|grep -v "Tables_in_$db_name"|while read a
do
mysql --defaults-extra-file="$HOME/tmp/.my.cnf" -e "DROP TABLE $db_name"."$a"
done
rm $HOME/tmp/.my.cnf
;;
"4")
echo "Datenbank Name eingeben:"
read db_name
echo "Datenbank-Version MySQL 8:[y/n]:"
read -n1 db_ver
echo ""
db_host=localhost
read -s -p "Datenbank Passwort:" MYSQL_PWD
if [ "$db_ver" == "y" ]
then
db_host=$(awk '/mysql80.local/ {print $1}' /etc/hosts)
fi
echo [client] > $HOME/tmp/.my.cnf
echo "host=$db_host" >> $HOME/tmp/.my.cnf
echo "port=3307" >> $HOME/tmp/.my.cnf
echo "user=$(echo "$db_name"|awk -F/ '{print $NF}'|awk -F_ '{print $1}'|awk -F. '{print $1}')" >> $HOME/tmp/.my.cnf
echo "password=$MYSQL_PWD" >> $HOME/tmp/.my.cnf
echo ""
ndb_name=$(echo $db_name|awk -F/ '{print $NF}'|awk -F_ '{print $1}'|awk -F. '{print $1}')
echo "Starte Restore fuer Datenbank $ndb_name."
datend=$(echo $HOME/$db_name|awk -F. '{print $NF}')
if [ "$datend" == "gz" ]
then
zcat $HOME/$db_name|mysql --defaults-extra-file="$HOME/tmp/.my.cnf" $ndb_name
else
cat $HOME/$db_name|mysql --defaults-extra-file="$HOME/tmp/.my.cnf" $ndb_name
fi
rm $HOME/tmp/.my.cnf
;;
"5")
echo -n "Backupserver eingeben:"
read backup_serv
echo -n "Benutzername eingeben:"
read ftp_uname
read -s -p "FTP Passwort:" FTP_PWD
echo "machine $backup_serv" > $HOME/.netrc
echo "login $ftp_uname" >> $HOME/.netrc
echo "password $FTP_PWD" >> $HOME/.netrc
echo ""
wget_verz=""
while :
do
exec wget -O - ftp://"$backup_serv":21/"$wget_verz" 2>/dev/null|grep '^ '|sed 's/<a href="ftp:\/\/'$backup_serv':21//g'|awk -F\" '{print $1}'
echo "(Verzeichnis) oder (d) fuer Download listing. (q) fuer Quit."
read in_put
case $in_put in
"q")
rm $HOME/.netrc
break
;;
"d")
wget_opt="-r"
wget -r -l 100 ftp://"$backup_serv":21/"$wget_verz"
;;
*)
wget_verz=$(echo $in_put|sed 's/^\///g')
;;
esac
done
;;
"6")
while :
do
echo -n "Quell Ordner angeben:"
read infold
if [ -d "$infold" ]
then
break
else
echo "Quell Ordner $infold nicht gefunden."
fi
done
while :
do
echo -n "Quell Datenbank angeben:"
read indb
testf=$(find $infold -maxdepth 1 -type f -name $indb\*.sql)
if [ "$testf" != "" ]
then
break
else
echo "Quell Datenbank $infold/$indb nicht gefunden"
fi
done
echo -n "Ziel Datenbank angeben:"
read targetdb
if [ -f "$targetdb" ]
then
echo "$targetdb ueberschreiben [y/n]:"
read userwrite
if [ $userwrite == y -o $userwrite == j ]
then
> "$targetdb"
find $infold -maxdepth 1 -type f -name $indb\*schema.sql|grep -v schema-post.sql|while read a
do
cat "$a" 2>/dev/null >> "$targetdb"
echo "$(basename "$a") zu $(basename "$targetdb") erfolgreich hinzugefuegt"
done
echo "# Schemas der Datenbank $indb zu $targetdb erfolgreich hinzugefuegt"
find $infold -maxdepth 1 -type f -name $indb\*00000.sql|grep -v schema-post.sql|while read a
do
cat "$a" 2>/dev/null >> "$targetdb"
echo "$(basename "$a") zu $(basename "$targetdb") erfolgreich hinzugefuegt"
done
echo "# Tables der Datenbank $indb erfolgreich in Datenbank $targetdb hinzugefuegt."
else
echo "Benutzer Abbruch"
exit 1
fi
else
find $infold -maxdepth 1 -type f -name $indb\*schema.sql|grep -v schema-post.sql|while read a
do
cat "$a" 2>/dev/null >> "$targetdb"
echo "$(basename "$a") zu $(basename "$targetdb") erfolgreich hinzugefuegt"
done
echo "# Schemas der Datenbank $indb zu $targetdb erfolgreich hinzugefuegt"
find $infold -maxdepth 1 -type f -name $indb\*00000.sql|grep -v schema-post.sql|while read a
do
cat "$a" 2>/dev/null >> "$targetdb"
echo "$(basename "$a") zu $(basename "$targetdb") erfolgreich hinzugefuegt"
done
echo "# Tables der Datenbank $indb erfolgreich in Datenbank $targetdb hinzugefuegt."
fi
;;
*)
echo "invalid option $REPLY"
;;
esac
done
}