Modification d'un AIX mot de passe via le script?
Je suis en train de changer un mot de passe d'un utilisateur via un script. Je ne peux pas utiliser sudo, il est une fonction qui demande à l'utilisateur de changer le mot de passe de nouveau si un autre utilisateur modifie son mot de passe.
AIX est en cours d'exécution sur le système.
malheureusement, chpasswd n'est pas disponible.
J'ai prévu installé, mais j'ai de la difficulté avec cela aussi.
voici ce que j'ai pensé serait de travailler
echo "oldpassword\nnewpasswd123\nnewpasswd123" | passwd user
Cependant, une fois exécuté le script, je suis invité avec please enter user's old password
ne devraient-ils pas tous être repris dans?
Je suis un débutant avec les scripts shell et cela a été dérouté.
- Notez que AIX n'est pas Linux; vous devez mettre à jour votre question afin de clarifier ce qui vous parlez.
- Changé le titre.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer:
echo "USERNAME:NEWPASSWORD" | chpasswd
echo "USERNAME:NEWPASSWORD" | sudo chpasswd
lors de l'exécution par le biais d'un non sudo script parentchpasswd
me semble être la bonne réponse. A travaillé pour moi la configuration d'un menu fixe de l'image. J'aime les suivantes (en bash) pour éviter le 'echo' bruit:chpasswd <<<"$USERNAME:$PASSWORD"
Utilisation GNU
passwd
stdin drapeau.De la
man
page:REMARQUE: Seulement pour racine utilisateur.
Exemple
Alternativement, vous pouvez utiliser
expect
, ce code simple fera l'affaire:Résultats
"echo oldpassword\nnewpasswd123\nnewpasswd123" | passwd --stdin user
- je obtenir passwd: illegal option -- -passwd: unrecognized option '--stdin'
expect
exemple ne fonctionne pas avec la plupart des locales. Peut-être mis àC
?En plus des autres suggestions, vous pouvez également réaliser cela à l'aide d'un HEREDOC.
Dans votre cas, cela pourrait ressembler à:
Vous avez besoin d'echo-e pour les caractères de saut de ligne pour prendre effet
vous avez écrit
vous devriez essayer
plus que probablement, vous n'aurez pas besoin de la oldpassword\n partie de commande, vous devez juste besoin de deux nouveaux mots de passe. N'oubliez pas d'utiliser des guillemets simples autour des points d'exclamation!
my@secret\npasword123
?Vous pouvez essayer :
useradd -s /bin/bash -g www-data -d /var/www/$vhost $Name; echo -e "$sshPasswd\n$sshPasswd" | passwd $Name; id $Name
Juste ce
De sortie réelle de machine ubuntu (désolé, pas de AIX disponible pour moi):
C'est à partir de : Script pour changer le mot de passe sur les serveurs linux via ssh
Le script ci-dessous devront être enregistrés dans un fichier (par exemple
./passwdWrapper
) et de le rendre exécutable (chmod u+x ./passwdWrapper)
Ensuite, vous pouvez exécuter
./passwdWrapper $user $password $server $newpassword
qui aura pour effet de modifier le mot de passe.Remarque: vous devez installer
expect
sur la machine à partir de laquelle vous serez à l'exécution de la commande. (sudo apt-get install expect
) Le script fonctionne sur CentOS 5/6 et Ubuntu 14.04, mais si les invites danspasswd
changement, vous pouvez avoir à modifier leexpect
lignes.Consulter le lien ci-dessous...
echo -e "$password1\n$password1" | passwd $username
que mon système n'aime pasVous pouvez essayer
LINUX
UNIX
Si vous n'avez pas utiliser le "-c" argument, vous devez modifier le mot de passe la prochaine fois.
echo username:password | chpasswd -c
déclenche une erreurPour moi cela a fonctionné dans un vagabond VM:
Si vous pouvez utiliser ansible, et de définir les droits sudo en elle, alors vous pouvez facilement utiliser ce script. Si vous êtes désireux de script quelque chose comme cela, cela signifie que vous devez le faire sur plus d'un système. Par conséquent, vous devriez essayer d'automatiser cela.