Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/plugins/portfolio-slideshow/portfolio-slideshow.php:65) in /var/www/html/wp-includes/feed-rss2.php on line 8
Scripts – Les mémos d'un admin système https://blog-sysadmin.archives.slashroot.fr Sat, 29 Jul 2017 07:31:37 +0000 fr-FR hourly 1 https://wordpress.org/?v=4.8.23 [Bash] Script pour dumper des bases MySQL https://blog-sysadmin.archives.slashroot.fr/?p=1402 https://blog-sysadmin.archives.slashroot.fr/?p=1402#respond Mon, 24 Jul 2017 09:07:30 +0000 http://blog.slashroot.fr/?p=1402 #!/bin/bash # # MySQL_DB_Dump # # Auteur : Johan # Contact : johan@slashroot.fr # Date : 13/07/2011 # Version : 1.0 # Description : Dump une base donnee MySQL # Commentaire : Le fichier de dump peut etre envoye par email # Requis : Besoin de mutt si l'option -m est selectionnee # # # Usage # usage(){ echo "" echo "Utilisation : mysql_db_dump -s server_name -u mysql_user -p file/password -b database1,database2... -d save_folder [-m adresse@domain.com]" echo "" echo "OPTIONS :" echo " -h Affiche l'aide" echo " -u Utilisateur MySQL a utilise pour le dump" echo " -s Serveur contenant la base de données" echo " -p Type d'authentification a utiliser (prompt du password ou fichier ~/.my.cnf)" echo " -b Specifie la ou les bases a dumper" echo " -d Dossier a utiliser pour stocker les dumps" echo " -m Envoi le fichier de dump par email" echo "" echo "EXEMPLE :" echo " - Dump des bases db1 et db2 avec une authentification par fichier et l'envoi des fichiers par email" echo " mysql_db_dump -s localhost -u bob -p file -b db1,db2 -m dba@slashroot.fr" echo "" } # # getopts # while getopts "s:u:p:b:d:m:h" opt; do case $opt in s) serveur=$OPTARG ;; u) user=$OPTARG ;; p) auth=$OPTARG ;; b) bases=$OPTARG ;; m) dest=$OPTARG if [ ! -f /bin/mutt ] ; then echo "ERREUR - L'utilitaire mutt est introubable" exit 1 fi ;; d) folder=$OPTARG ;; h) usage exit 0 ;; \?) usage exit 1 ;; 🙂 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 ]]> https://blog-sysadmin.archives.slashroot.fr/?feed=rss2&p=1402 0 [Bash] Récupérer la taille des bases MySQL https://blog-sysadmin.archives.slashroot.fr/?p=1405 https://blog-sysadmin.archives.slashroot.fr/?p=1405#respond Wed, 19 Jul 2017 09:09:27 +0000 http://blog.slashroot.fr/?p=1405 #!/bin/bash # # MySQL_DB_Sizes # # Auteur : Johan # Contact : johan@slashroot.fr # Date : 13/07/2011 # Version : 1.0 # Description : Recupère la taille de chaque base de données et envoi les résultats par email # Commentaire : L'utilisateur doit avoir acces en lecture a toutes les bases dont on souhaite connaitre la taille # Reminder for a MySQL read only user # CREATE USER 'ro-user'@'localhost' IDENTIFIED BY 'MySQL_Ro_User_Password'; # GRANT SELECT ON database1.* TO 'ro-user'@'localhost'; # GRANT SELECT ON database2.* TO 'ro-user'@'localhost'; # ... # # Usage # usage(){ echo "" echo "Utilisation : mysql_db_sizes -s server_name -u mysql_user -p file/password [-b database1,database2...] [-m adresse@domain.com]" echo "" echo "OPTIONS :" echo " -h Affiche l'aide" echo " -u Utilisateur MySQL a utilise pour la requete SQL" echo " -s Serveur contenant la base de données" echo " -p Type d'authentification a utiliser (prompt du password ou fichier ~/.my.cnf)" echo " -b Specifie les bases a afficher (par defaut toutes celles accessibles" echo " -m Envoi le resultat par email au lieu de l'afficher dans le terminal" echo "" echo "EXEMPLES :" echo " 1 - Affichage de la taille de toutes les bases avec une authentification par mot de passe" echo " mysql_db_sizes -s localhost-u bob -p password" echo " 2 - Envoi de la taille des bases db1 et db2 par email avec une authentification par fichier" echo " mysql_db_sizes -s localhost -u bob -p file -b db1,db2 -m bob@admin.fr" echo "" } # # getopts # while getopts "s:u:p:b:m:h" opt; do case $opt in s) serveur=$OPTARG ;; u) user=$OPTARG ;; p) auth=$OPTARG ;; b) bases=$OPTARG ;; m) dest=$OPTARG ;; h) usage exit 0 ;; \?) usage exit 1 ;; 🙂 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

]]>
https://blog-sysadmin.archives.slashroot.fr/?feed=rss2&p=1405 0
[Bash] Replication d’une base Kerberos https://blog-sysadmin.archives.slashroot.fr/?p=1400 https://blog-sysadmin.archives.slashroot.fr/?p=1400#respond Mon, 17 Jul 2017 09:05:02 +0000 http://blog.slashroot.fr/?p=1400 Ce script permet de répliquer une base de royaume Kerberos d’un master vers un ou plusieurs slave en s’appuyant sur le service kpropd.

#!/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
]]>
https://blog-sysadmin.archives.slashroot.fr/?feed=rss2&p=1400 0
[Bash] Dump d’une base Kerberos https://blog-sysadmin.archives.slashroot.fr/?p=1398 https://blog-sysadmin.archives.slashroot.fr/?p=1398#respond Sun, 16 Jul 2017 09:02:11 +0000 http://blog.slashroot.fr/?p=1398 #!/bin/bash # # Kerberos_Dump # # Auteur : Johan # Contact : johan@slashroot.fr # Date : 24/05/16 # Version : 1.0 # Description : Le script realise un double dump (standard et ov) de la base kerberos passee en parametre # Commentaire : On part du principe que le script est execute en cron de maniere journaliere # # # Definition des variables # # Royaume a sauvegarder realm=$1 [[ -z "$realm" ]] || [[ "$realm" = "-"* ]] && echo "Usage: $0 REALM" && exit 1 # Repertoire contenant les dumps save_rep="/var/kerberos/backup" # Date et heure du dump heure="`date +%H%M`" date="`date +%Y%m%d`" # Nombre de dump a conserver nb_backup=30 # Nom du fichier de backup save_file="${realm}-${date}_${heure}" # # Verifications # # On verifie qu'on a bien la commande kdb5_util if [ ! -f /usr/sbin/kdb5_util ] ; then echo "ERREUR - Il manque la commande kdb5_util" exit 1 fi # On regarde si le repertoire de sauvegarde existe deja, sinon on le cree if [ ! -d $save_rep ] ; then mkdir -p $save_rep if [ ! -d $save_rep ] ; then echo "ERREUR - Impossible de créer le dossier qui va contenir les sauvegardes" exit 1 fi fi # # Au travail # # Sauvegarde de la base kerberosa cd $save_rep /usr/sbin/kdb5_util -r $realm dump $save_file /usr/sbin/kdb5_util -r $realm dump -ov $save_file.ov # On verifie que tout s'est bien passe if [ -f "$save_file.dump_ok" -a -f "$save_file.ov.dump_ok" ]; then rm -f $save_file.dump_ok $save_file.ov.dump_ok exit 0 else echo "ERREUR - Le dump de la base du royaume $realm s'est mal passe" exit 1 fi # On supprime les sauvegardes en trop s'il y en a find $save_rep -name "$realm-*_*" -mtime +30 -ls -delete ]]> https://blog-sysadmin.archives.slashroot.fr/?feed=rss2&p=1398 0 [Powershell] Liste des utilisateurs ne s’étant pas connectés au domaine depuis plus de 30 jours https://blog-sysadmin.archives.slashroot.fr/?p=626 https://blog-sysadmin.archives.slashroot.fr/?p=626#comments Thu, 12 Jul 2012 13:15:41 +0000 http://blog.slashroot.fr/?p=626 # Nom : Comptes_inactifs.ps1 # Date : 17/02/2012 # Auteur : Johan # Description : Liste les utilisateurs qui ne se sont pas connectés au domaine depuis # plus de 30 jours et envoi le résultat par mail # Commentaire : Exécution tous les 1er du mois # Recherche dans l'OU souhaité tous les comptes utilisateurs $ldapquery = [ADSI] 'LDAP://OU=Utilisateurs,DC=em-corporation,DC=fr' $objrechercher = New-object system.directoryservices.directorysearcher($ldapQuery) $objrechercher.filter ='(&(objectClass=person)(objectCategory=person))' $boucle = $objrechercher.findall() $liste="" # Fonction Get-UTCAge permettant de transformer la valeur du lastlogon en date afin de calculer le nombre de jours depuis la dernière connexion Function Get-UTCAge { Param([int64]$Last=0) if ($Last -eq 0) { } else { [datetime]$utc="1/1/1601" $i=$Last/864000000000 $lastlogon = ($utc.adddays($i)) $today=get-date $diff=($today)-($lastlogon) # Si l'utilisateur ne s'est pas connecté depuis au moins 30 jours on ajoute son nom à la liste if ($diff.Days -gt 30) { write "$name`r" } } } # Pour chaque utilisateur foreach ($user in $boucle) { # On vérifie qu'il possède une adresse email (permettant de différencier les comptes utilisateurs des comptes génériques ou applicatifs) if ($user.properties.mail) { # On récupère le nom et le lastlogon de l'utilisateur $name = $user.properties.name $last = $user.Properties.lastlogon $liste+=Get-UTCAge $user.properties.item("lastlogon")[0] } } # On prépare et on envoi le mail $expediteur = "bob@em-corporation.fr" $destinataire = " admin@em-corporation.fr" $serveur = "@MTA" $objet = "Active Directory - Utilisateurs inactifs" $texte = "Bonjour,`r`rVoici la liste des utilisateurs ne s'étant pas connectés au domaine depuis plus de 30 jours :`r`r$liste`rCordialement`r--`rBob" $message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte $SMTPclient = new-object System.Net.Mail.SmtpClient $serveur $SMTPclient.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials $SMTPclient.Send($message) ]]> https://blog-sysadmin.archives.slashroot.fr/?feed=rss2&p=626 8