Étiquette : Scripts

[Bash] Script pour dumper des bases MySQL

#!/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 ""
}
 (suite…)

[Bash] Récupérer la taille des bases MySQL

#!/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 ""
}
 (suite…)

[Bash] Replication d’une base Kerberos

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 ""
}

 (suite…)

[Bash] Dump d’une base Kerberos

#!/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

[Powershell] Liste des utilisateurs ne s’étant pas connectés au domaine depuis plus de 30 jours

# 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)