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)
精彩评论