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<&-
Abonnieren
Kommentare zum Post (Atom)
Keine Kommentare:
Kommentar veröffentlichen