开发者

How to create a user in linux using python

How do I create a user in Linux using Python? I mean, I know about the subprocess module and thought about calling 'adduser' and passing all the p开发者_运维百科arameters at once, but the 'adduser' command asks some questions like password, full name, phone and stuff. How would I answer this questions using subprocess? I've seen module called pexpect in this question: Can I use Python as a Bash replacement?. Is there any other standard module?


Use useradd, it doesn't ask any questions but accepts many command line options.


On Ubuntu, you could use the python-libuser package


import os
import crypt

password ="p@ssw0rd" 
encPass = crypt.crypt(password,"22")
os.system("useradd -p "+encPass+" johnsmith")


You could just use the built-in binaries so just call useradd or something through the subprocess module, However I don't know if there's any other modules that hook into Linux to provide such functionality.


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)


This is a solution where shell is false.

#!/bin/env/python

import subprocess
import traceback
import sys


def user_add(username, user_dir=None):
    if user_dir:
        cmd = ["sudo", "useradd", "-d", user_dir, "-m", username]
    else:
        cmd = ["sudo", "useradd", username]

    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    output, error = p.communicate()
    output = output.strip().decode("utf-8")
    error = error.decode("utf-8")
    if p.returncode != 0:
        print(f"E: {error}")
        raise
    return output


try:
    username = "user"
    output = user_add(username)
    print(F"Success. {username} is added")
except:
    traceback.print_exc()
    sys.exit(1)


0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜