2010-07-06 6 views
11

Comment créer un utilisateur sous Linux en utilisant Python? Je veux dire, je connais le module de sous-processus et j'ai pensé à appeler 'adduser' et à passer tous les paramètres à la fois, mais la commande 'adduser' pose des questions comme mot de passe, nom complet, téléphone et autres. Comment pourrais-je répondre à ces questions en utilisant un sous-processus? J'ai vu le module appelé pexpect dans cette question: Can I use Python as a Bash replacement?. Y a-t-il un autre module standard?Comment créer un utilisateur sous Linux en utilisant python

Répondre

19

Utilisez useradd, il ne pose pas de questions mais accepte de nombreuses options de ligne de commande.

3

Vous pouvez simplement utiliser les binaires intégrés, donc appelez simplement useradd ou quelque chose via le module de sous-processus. Cependant, je ne sais pas si d'autres modules sont connectés à Linux pour fournir cette fonctionnalité.

7

Sur Ubuntu, vous pouvez utiliser le package python-libuser

+0

Est-ce un paquet ubuntu seulement? Si je dois l'exécuter sur d'autres distributions, devrai-je installer manuellement ce paquet? – Salsa

+1

Vous êtes probablement mieux avec 'useradd' pour la compatibilité de distribution croisée, mais notez que même' useradd' n'est pas garanti pour être disponible sur toutes les distributions. Puppy Linux je crois ne vient pas avec useradd par défaut, par exemple. – unutbu

2
import os 
import crypt 

password ="[email protected]" 
encPass = crypt.crypt(password,"22") 
os.system("useradd -p "+encPass+" johnsmith") 
+1

quel est le numéro 22? Est-ce toujours la bonne façon de chiffrer en 2017? – answerSeeker

+0

22 est un sel. Vous pouvez utiliser des valeurs aléatoires. Si vous voulez une sécurité supplémentaire, vous pouvez utiliser sha-256 ou sha-512 – mcolak

2
def createUser(name,username,password): 
    encPass = crypt.crypt(password,"22") 
    return os.system("useradd -p "+encPass+ " -s "+ "/bin/bash "+ "-d "+ "/home/" + username+ " -m "+ " -c \""+ name+"\" " + username) 
+0

À quoi sert le numéro 22? En outre, le sous-processus serait-il meilleur que os.system? – answerSeeker

+0

@answerSeeker c'est du sel. salt est une chaîne de 2 caractères qui sera utilisée pour sélectionner l'une des 4096 variantes de DES. (de pydoc) – yanpas

+1

désolé pour le necrobump, mais la crypte peut générer un sel pour vous, pas besoin de spécifier. sel = crypt.mksalt (crypt.METHOD_SHA512) salthash = crypt.crypt (mot de passe, le sel) voir [ici] (https://docs.python.org/3/library/crypt.html#crypt. mksalt) pour plus d'informations. –

Questions connexes