Forum Programmation.shell Changer de mot de passe dans un script

Posté par  (site web personnel) .
Étiquettes : aucune
0
2
août
2007
Bonjour,

J'ai un script qui doit changer le mot de passe mais voila, je n'y arrive pas.
J'ai essayé plusieurs trucs :

echo "motdepasse" > newpass
echo "motdepasse" >> newpass
cat newpass | passwd

Marche pas.

avec passwd < newpass

Marche pas non plus.

Et enfin, j'ai tenté plusieurs scripts à base de expect trouvé sur le net mais :
Marche pas.


Est-ce que quelqu'un aurai un truc fonctionnel sous la main ?

Merci.
  • # Expect

    Posté par  . Évalué à 1.

    Un script expect qui fonctionne en root :

    #!/usr/bin/expect
    set USER [ lindex $argv 0 ]
    set PASS [ lindex $argv 1 ]
    spawn passwd $USER
    expect "Enter new UNIX password:"
    send "$PASS\r"
    expect "Retype new UNIX password:"
    send "$PASS\r"


    Pour le lancer :
    ./ce_script ton_utilisateur nouveau_mot_de_passe

    Il ne fonctionne qu'en root, puisque en tant qu'utilisateur normal, il te faudrait retaper ton mot de passe actuel !
  • # Solution:

    Posté par  (site web personnel) . Évalué à 4.

    echo utilisateur:mot_de_passe | chpasswd
    Par contre le mot de passe doit être en clair, ce qui n'est pas top.
    • [^] # Re: Solution:

      Posté par  (site web personnel) . Évalué à 0.

      Ce n'est pas un problème le mot de passe en clair vu que c'est pour automatiser une installation (vserver) et que le mot de passe sera généré dans le script lui même.

      Merci beaucoup pour la commande.


      Merci aux autres pour leurs réponses même si je n'ai pas testé.
  • # Si, ça marche avec expect !

    Posté par  . Évalué à 1.

    Mais je reconnais avoir un peu galéré pour trouver :-)

    Voici un exemple pour changer un mot de passe samba (depuis un script):

    # "$" must be escaped or shell will think it is its variables...
    cat <<EOF | expect -f - "$USER" "$PWD"
    spawn smbldap-passwd [lindex \$argv 0]
    set password [lindex \$argv 1]
    expect "password:"
    send "\$password\r"
    expect "password:"
    send "\$password\r"
    expect eof
    EOF

    A adapter of course (commande lancée et prompts attendus) ...
  • # Changement de mdp

    Posté par  (site web personnel) . Évalué à 1.

    si ton script est root, tu peux regarder du coté de chpasswd

    Sinon tu n'as pas trop le choix, seul passwd est suid et a le droit de changer les mots de passe -> expect (a débugger si besoin).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.