2017-08-23 6 views
-1

Ceci est ma fonction python qui crée le fichier htpasswd et y ajoute le nom d'utilisateur et le mot de passe.comment automatiser l'entrée de mot de passe htpasswd dans les scripts python

def __adduser(self, passfile, username): 

     command=["htpasswd", "-c", passfile, username] 
     execute=subprocess.Popen(command, stdout=subprocess.PIPE) 
     result=execute.communicate() 
     if execute.returncode==0: 
      return True 
     else: 
      #will return the Exceptions instead 
      return False 

Il travaille beaucoup, mais la seule amélioration que je veux est, comment automatiser l'entrée de mot de passe, il demander après l'exécution des scripts qui doivent être réglés d'une certaine valeur de la variable

+0

Je préfère regarder une implémentation de Python existant/wrapper que d'essayer de passer par une CLI subprocess ici ... https://pypi.python.org/pypi/htpasswd – deceze

+0

probablement: https://stackoverflow.com/questions/163542/python-how-do-i-pass-a-string-into-subprocess-popen-using-the-stdin-argument – Some1Else

+0

le problème que j'ai eu en utilisant le htpasswd est, le nouveau nom d'utilisateur est ajouté si le fichier existe déjà. Je veux juste un seul fichier avec une seule entrée. que htpasswd ne peut pas remplir –

Répondre

1

htpasswd a

Lire le mot de passe de stdin sans vérification (pour l'utilisation de script).

Alors:

def __adduser(self, passfile, username, password): 
    command = ["htpasswd", "-i", "-c", passfile, username] 
    execute = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE) 
    execute.communicate(input=password) 
    return execute.returncode == 0