BITFOX® | LÖSUNGEN | SERVICE | LOGIN | BLOG | KONTAKT

Dienstag, 28. Juli 2015

Kennwörter auf verschiedenen Unix-Servern ändern.


....es war einmal wieder: Ein Benutzer, der sein Kennwort in einer eMail an alle seine Kollegen veröffentlichte...

Wie ändert man nun schnell die Kennwörter auf "ein paar" Linux-Servern...?


Hrm... die betroffenen Server in eine Datei mit dem Namen "server.txt" ... und.. dann... .mhrm.....

Es wird mal wieder Zeit für ein kleines Script. :-)

[ hier gehts weiter ]



#!/bin/bash
#
#
# Kleines Script zum Aendern von Kennwoertern
#
# 2015-07-28 Oliver Lenz
#
#

# zu aendernder benutzer
benutzer="benutzername"
# neues zu setzendes kennwrot
kennwort="das_kennwort_ist_neu"

#
# Hinter dieser Linie solltest du nichts mehr aendern.
#

echo -e "Bitte das Root-Kennwort eingeben: "
read -s rootkennwort
echo

basispfad=$(dirname $0)
betroffene_server="$basispfad/server.txt"
[ -e /usr/local/bin/expect ]; EXPECT="/usr/local/bin/expect"
if [ ! -e "$EXPECT" ]; then
        echo "Konnte expect nicht finden."
        exit
fi

exec 7< $betroffene_server
while IFS= read -r -u 7 servername; do
        echo -en "Kennwort aendern auf Server \t$servername: "
        $EXPECT -c "
                set timeout 10
                spawn ssh root@$servername
                expect {
                        \"*continue connecting (yes/no)?*\"     {
                                send \"yes\r\"
                                sleep 1
                                exp_continue
                        }

                        \"root@$servername* password: \"        {
                                send \"$rootkennwort\r\"
                                sleep 2
                                exp_continue
                        }

                        \"#\"                                   {
                                send \"passwd $benutzer\r\"
                                exp_continue
                        }
                        \"*New Password:*\"                     {
                                send \"$kennwort\r\"
                                exp_continue
                        }
                        \"*Re-enter new Password:*\"            {
                                send \"$kennwort\r\"
                                exp_continue
                        }
                        \"passwd: password successfully changed for $benutzer\" {
                                exit 255
                        }
                }
        " >/dev/null
        if [ "$?" == "255" ]; then
                echo "OK."
        else
                echo "Fehler."
        fi
done
exec 7<&-

Keine Kommentare:

Aktuelles