From 562b2864e3c99644d0f77a70bb63a716e9a149c9 Mon Sep 17 00:00:00 2001 From: Antoine Durand-Gasselin Date: Mon, 23 Mar 2009 16:13:29 +0100 Subject: [PATCH] [chgpass] pour pouvoir l'utiliser dans des scripts darcs-hash:20090323151329-bd074-e03b8289cd81601eb257dd1c628cb9832fd70152.gz --- gestion/chgpass.py | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/gestion/chgpass.py b/gestion/chgpass.py index c07da0e8..317c415f 100644 --- a/gestion/chgpass.py +++ b/gestion/chgpass.py @@ -39,7 +39,19 @@ def decode64(chaine): except: return chaine.decode('utf8','ignore') -def chgpass(dn) : +def chgpass(dn, mdp = None) : + if mdp == None: + mdp = promptpass(dn) + + # Changement mdp + if os.system("/usr/bin/ldappasswd -H '%s' -x -D '%s' -w '%s' '%s' -s '%s' > /dev/null" % (uri, ldap_auth_dn, ldap_password, dn, mdp) ): + cprint(u'Erreur lors du changement de mot de passe', 'rouge') + syslog.syslog("LDAP password changed for dn=%s" % dn) + else : + cprint(u'Changement effectué avec succès', u'vert') + + +def promptpass(dn): cprint(u"""Le nouveau mot de passe doit comporter au minimum 6 caractères. Il ne doit pas être basé sur un mot du dictionnaire.""", 'jaune') print "Il est conseillé d'utiliser une combinaison de minuscules, majuscules,\nde chiffres et d'au moins un caractère spécial." @@ -106,23 +118,17 @@ Il ne doit pas être basé sur un mot du dictionnaire.""", 'jaune') if mdp != mdp1 : cprint(u'Les deux mots de passe entrés sont différents, réesayer', 'rouge') continue - break - # Changement mdp - if os.system("/usr/bin/ldappasswd -H '%s' -x -D '%s' -w '%s' '%s' -s '%s' > /dev/null" % (uri, ldap_auth_dn, ldap_password, dn, mdp) ): - cprint(u'Erreur lors du changement de mot de passe', 'rouge') - syslog.syslog("LDAP password changed for dn=%s" % dn) - else : - cprint(u'Changement effectué avec succès', u'vert') - except KeyboardInterrupt : cprint(u'\nAbandon', 'rouge') - pass + sys.exit(1) except EOFError : # Un Ctrl-D cprint(u'\nAbandon', 'rouge') - pass + sys.exit(1) + + return mdp if __name__ == '__main__' : sys.stdout.write('\r \r') # Pour esthétique lors de l'utilisation par sudo