Automatiser la modification du mot de passe root dans un parc de serveurs

Objectif : modifier le mot de passe root (ou d’un autre compte...) dans l’ensemble d’un parc de serveurs.

modifMdpRoot.sh

#!/bin/bash
echo "Modification du mot de passe root dans l'ensemble des serveurs"
read -s -p "nouveau mot de passe : " mdp
echo ""
if test -z "$mdp" ; then
        echo "le mot de passe ne peut être vide"
        exit
fi
read -s -p "retapez le mot de passe (vérification) : " mdp2
if test "$mdp" != "$mdp2" ; then
        echo "Les mots de passe saisis ne correspondent pas"
        exit
fi
echo "Lancement de la modification"
SERVEUR=/root/scripts/listeserveurs
for serveur in `cat $SERVEUR|grep "^[^#].*$"`
do
        echo 'Traitement dans '$serveur
        ssh $serveur "echo root:$mdp|chpasswd"
done

Quelques explications :

le fichier /root/scripts/listeserveurs contient la liste des serveurs, selon la forme suivante :

serveur1
serveur2
#serveur_non_traité_ou_réformé

la connexion ssh doit avoir été paramétrée par échange de clés, sinon vous serez obligé de saisir le mot de passe root à chaque connexion (le script devient alors sans intérêt...) ;

vous pouvez fournir une liste des comptes et des mots de passe à modifier, en les indiquant dans un fichier texte (compte:mot_de_passe). La commande chpasswd traitera toutes les lignes du fichier passé en paramètre.

et...

une fois la modification effectuée, testez que la connexion fonctionne bien, avant de fermer votre console !