Ändern einer AIX-Passwort per Skript?
Ich versuche, ändern Sie das Kennwort eines Benutzers über ein Skript. Ich kann nicht sudo verwenden, da es eine Funktion, die erfordert, dass der Benutzer das Kennwort ändern wieder, wenn ein anderer Benutzer sein Passwort ändert.
AIX auf dem system ausgeführt wird.
leider chpasswd nicht verfügbar ist.
Ich erwartet habe installiert, aber ich bin Probleme mit, dass auch.
hier ist, was ich dachte, funktionieren würde,
echo "oldpassword\nnewpasswd123\nnewpasswd123" | passwd user
Aber mal das Skript ausführen ich aufgefordert werde, mit please enter user's old password
sollten Sie nicht alle sein, hallten in?
Ich bin ein Anfänger mit shell scripting und dies war verblüfft.
- Beachten Sie, dass AIX nicht Linux; sollten Sie aktualisieren Sie Ihre Frage zu klären, die Sie zu Fragen.
- Den Titel geändert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen:
echo "USERNAME:NEWPASSWORD" | chpasswd
echo "USERNAME:NEWPASSWORD" | sudo chpasswd
bei der Ausführung nicht durch ein parent-Skript sudochpasswd
mir scheint, die richtige Antwort. Bei mir funktioniert die Einrichtung eines Docker-image. Ich mag die folgenden (in der bash) zu vermeiden, die "echo" - Lärm:chpasswd <<<"$USERNAME:$PASSWORD"
Verwenden GNU
passwd
stdin Flagge.Aus der
man
Seite:HINWEIS: Nur für root Benutzer.
Beispiel
Alternativ können Sie
expect
dieser einfache code wird den trick tun:Ergebnisse
"echo oldpassword\nnewpasswd123\nnewpasswd123" | passwd --stdin user
ich bekomme passwd: illegal option -- -passwd: unrecognized option '--stdin'
expect
Beispiel funktioniert nicht mit den meisten Gebietsschemas. Vielleicht legen Sie es aufC
?Zusätzlich zu den anderen Kommentaren, können Sie auch erreichen dies mit einer HEREDOC.
In Ihrer unmittelbaren Fall, könnte dies wie folgt Aussehen:
Müssen Sie echo -e neue-Zeile-Zeichen wirksam
Sie schrieb
sollten Sie versuchen,
mehr als wahrscheinlich, werden Sie nicht brauchen, die oldpassword\n-Teil des Befehls, sollten Sie müssen nur die beiden neuen Passwörter. Vergessen Sie nicht, verwenden Sie einfache Anführungszeichen um Ausrufezeichen!
my@secret\npasword123
?Können Sie versuchen :
useradd -s /bin/bash -g www-data -d /var/www/$vhost $Name; echo -e "$sshPasswd\n$sshPasswd" | passwd $Name; id $Name
Nur diese
Aktuelle Ausgabe von ubuntu-Maschine (sorry, kein AIX, die mir zur Verfügung):
Dies ist aus : Skript zum Passwort ändern auf linux-Servern über ssh
Dem Skript unten werden müssen, werden als Datei gespeichert (z.B.
./passwdWrapper
) und ausführbar gemacht (chmod u+x ./passwdWrapper)
Dann können Sie
./passwdWrapper $user $password $server $newpassword
die tatsächlich das Passwort ändern.Hinweis: Dies erfordert, dass Sie installieren
expect
auf der Maschine, von der aus Sie den Befehl ausführen. (sudo apt-get install expect
) Das Skript arbeitet auf CentOS 5/6 und Ubuntu 14.04, aber wenn Sie die Anweisungen impasswd
ändern, müssen Sie möglicherweise zu zwickenexpect
Linien.Finden Sie den link unten, sowie...
echo -e "$password1\n$password1" | passwd $username
dass mein system nicht magKönnen Sie versuchen,
LINUX
UNIX
Wenn Sie das nicht mit "-c" - argument, Sie müssen Passwort ändern beim nächsten mal.
echo username:password | chpasswd -c
wirft FehlerFür mich dies in eine vagrant VM:
Wenn Sie verwenden können, ansible, und legen Sie die sudo-Rechte, dann können Sie einfach dieses Skript benutzen. Wenn Sie wollen, um die Skripts so etwas wie dies, es bedeutet, dass Sie brauchen, um es auf mehr als einem system. Daher sollten Sie versuchen, Sie zu automatisieren, dass Sie als gut.