URL: https://linuxfr.org/forums/programmation-python/posts/je-suis-trop-b%C3%AAte Title: Je suis trop bête ! Authors: mats Date: 2009年10月07日T22:28:08+02:00 Tags: debian Score: 0 Bonjour, je me débats avec un problème surement stupide, mais comme ça fait des heures que je cherche sans trouver, je me retourne vers vous. Je dois modifier le mot de passe de tous mes utilisateurs (dans un annuaire LDAP). Tout d'abord, voici un bout de code qui ne fonctionne pas (il fait semblant mais lorsque je vérifie, rien n'a été modifié) : >import subprocess > >f = open("import2.csv","r") > >for line in f: > entries = line.split(";") > username = entries[3] > password = entries[5][:-1] > print "%s %s" % (username, password) > pipe = subprocess.Popen("smbldap-passwd %s 2>/dev/null 1>&2" % (username), stdin=subprocess.PIPE, shell=True) > pipe.communicate("%s\n%s\n" % (password,password)) > >f.close() la ligne print "%s %s" % (username, password) sert juste à vérifier que je relève bien le username et le password dans un fichier qui contient d'autres informations. J'ai donc modifié, juste pour voir, le code en >import subprocess > >f = open("import2.csv","r") > >for line in f: > entries = line.split(";") > username = entries[3] > password = entries[5][:-1] > print "%s %s" % (username, password) > pipe = subprocess.Popen("smbldap-passwd %s 2>/dev/null 1>&2" % ("toto"), stdin=subprocess.PIPE, shell=True) > pipe.communicate("%s\n%s\n" % ("mdp","mdp")) > >f.close() où toto est un utilisateur qui existe. Ici son mot de passe est changé autant de fois qu'il y a de lignes dans le fichier, mais ... ça marche ! J'ai fait afficher par le programme le type de username et de password et je tombe bien sur str ! L'un d'entre vous aurait-il une idée de la différence entre ces deux situations ? Merci beaucoup. PS : c'est sous une debian Lenny et, bien entendu, la commande fonctionne très bien lorsque je la lance directement.

AltStyle によって変換されたページ (->オリジナル) /