usage
exit 1
;;
esac
done
#
# Variables et verifications
#
# Verification des parametres choisis
if [[ $# -eq 0 || -z $serveur || -z $user || -z $auth || -z $bases || -z $folder ]] ; then
usage
exit 1
fi
# Verification du dossier de sauvegarde
if [ ! -d $folder ] ; then
echo "ERREUR - Le dossier cense accueillir les dumps est introuvable"
exit 1
fi
# Verification de l'authentification choisi
if [ $auth == "file" ] ; then
if [ ! -f ~/.my.cnf ] ; then
echo " ERREUR - Le fichier .my.cnf est introuvable"
# exit 1
else
if [ $(stat -c %a ~/.my.cnf) != 600 ] ; then
echo "Warning - Votre fichier ~/.my.cnf n'a pas les droits recommandes"
fi
fi
elif [ ! $auth == "password" ] ; then
usage
exit 1
fi
# Date du jour
date=`date +%m-%d-%Y`
host=`hostname`
res="\n"
#
# Au boulot
#
# Pour chaque base
for base in $(echo $bases | sed "s/,/ /g") ; do
dump="$folder/dump-$base-$date.sql"
if [[ $auth == "file" ]] ; then
mysqldump -u $user $base > $dump
else
mysqldump -u $user -p $base > $dump
fi
gzip $dump
if [ -n $dest ] ; then
echo "" | mutt -s "[Save-SQL] Dump base $base du $date" -a ""$dump".gz" -- $dest
fi
done
]]>
usage
exit 1
;;
esac
done
#
# Variables et verifications
#
# Verification des parametres choisis
if [[ $# -eq 0 || -z $serveur || -z $user || -z $auth ]] ; then
usage
exit 1
fi
# Verification de l'authentification choisi
if [ $auth == "file" ] ; then
if [ ! -f ~/.my.cnf ] ; then
echo " ERREUR - Le fichier .my.cnf est introuvable"
exit 1
else
if [ $(stat -c %a ~/.my.cnf) != 600 ] ; then
echo "Warning - Votre fichier ~/.my.cnf n'a pas les droits recommandes"
fi
fi
elif [ ! $auth == "password" ] ; then
usage
exit 1
fi
host=`hostname`
res="\n"
# Fichier de sortie temporaire
tmp="/tmp/mysql_db_sized.tmp"
#
# Au boulot
#
# On extrait dans un fichier toutes les bases du serveurs
if [ $auth == "file" ] ; then
mysql -h $serveur -u $user -B --exec="SELECT table_schema, round(sum(data_length+index_length)/1024/1024,4) AS 'Size (MB)' FROM information_schema.tables GROUP BY table_schema;" > $tmp
else
mysql -h $serveur -u $user -p -B --exec="SELECT table_schema, round(sum(data_length+index_length)/1024/1024,4) AS 'Size (MB)' FROM information_schema.tables GROUP BY table_schema;" > $tmp
fi
# On supprime la premières ligne du fichier comprenant les titres ainsi que la base schema
sed -i '1d' $tmp
sed -i '/information_schema/d' $tmp
# Pour chaque base
while read line ; do
# On recupere son nom et sa taille
nom=`echo $line | cut -f1 -d ' '`
taille=`echo $line | cut -f2 -d ' '`
# On l'ajoute au resultat si on veut toutes les bases ou si elle fait partie des bases choisies
if [ -z $bases ] && ( echo $bases | grep -wq $nom ) ; then
res+="$nom : $taille Mo\n"
elif [ -n $bases ] && ( echo $bases | grep -wq $nom ) ; then
res+="$nom : $taille Mo\n"
fi
done < $tmp
# On redige et on envoi l'email si demande
if [ ! -z $dest ] ; then
corps="Bonjour,\n\nVoici les informations concernant la taille de ma/mes base(s) de données :\n\n$res\n\nnCordialement,\n\n$host"
echo -e $corps | mail -s "Infos : Taille base MySQL" $dest
# Sinon on affiche le resultat dans le terminal
else
echo -e $res
fi
# On supprime le fichier de sortie temporaire
rm -f $tmp
]]>#!/bin/bash
#
# Kerberos_Replication
#
# Auteur : Johan
# Contact : johan@slashroot.fr
# Date : 04/07/16
# Version : 1.0
# Description : Ce script permet de repliquer une base de royaume kerberos vers un ou plusieurs serveurs slaves
# Commentaire : A mettre en crontab
print_usage ()
{
echo ""
echo "Utilisation : kerberos_replication ROYAUME SLAVE1 SLAVE2 ..."
echo ""
}
err=0
# Le script prend au moins deux parametres
if [[ $# -lt 2 ]] ; then
echo ""
echo "ERREUR - Il faut au moins renseigner deux parametres"
print_usage
exit 1
fi
# On recupere le royaume
REALM=${1^^}
realm=${1,,}
# On verifie qu'on dispose de la base
if [[ ! -d "/var/kerberos/krb5kdc/$realm" ]] ; then
echo ""
echo "ERREUR - Il semble que la base ne soit pas presente"
echo ""
exit 1
fi
# On dump la base pour la propager
/usr/sbin/kdb5_util -r "$REALM" dump "/var/kerberos/krb5kdc/$realm/slave_datatrans"
# Les parametres apres le premier doivent etre des serveurs fonctionnels
shift
for slave in $@ ; do
if ( sleep 1 | nc -w 1 -v $slave 754 &> /dev/null ) ; then
/usr/sbin/kprop -r $REALM -f "/var/kerberos/krb5kdc/$realm/slave_datatrans" $slave &> /dev/null
else
err=$((err+1))
fi
done
if [[ $err -eq 0 ]] ; then
exit 0
fi
# Affichage du resultat
if [[ $err -eq $# ]] ; then
echo ""
echo "ERREUR - La replication de n'est pas bien passee"
echo ""
exit 1
else
echo ""
echo "WARNING - Il y a $err replication(s) en erreur"
echo ""
exit 1
fi
]]>