Python用户创建脚本

时间:2017-09-28 08:06:29

标签: python

出于培训原因,我试图编写一个创建和设置用户帐户和密码的python脚本:

import subprocess
from subprocess import Popen

users = ["user1"]
default_passwd = 'password'

for user in users:
    p1 = subprocess.Popen(["useradd" ,user])
    proc = Popen(['echo' ,default_passwd ,  '|' , 'passwd', user, '--stdin'])
    proc.communicate()

创建用户时,passwd进程失败。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

为什么不将密码与命令useradd一起传递? 这样它就可以创建一个没有提示的密码的用户!!

import os
import crypt

password ="your-password" 
crypted_password = crypt.crypt(password,"22")
os.system("useradd -p "+ crypted_password +" student")

答案 1 :(得分:1)

@Naren的答案很整洁,更具可读性;但为了回答你的subprocess问题,它应该是这样的

import subprocess

users = ["user1"]
default_passwd = 'password'

for user in users:
    p1 = subprocess.Popen(['useradd', user, '-p'])
    proc = subprocess.Popen(['echo', default_passwd], stdout=subprocess.PIPE)
    p1.communicate(proc.stdout)
    proc.communicate()
  • p1打开一个子shell,执行useradd user1命令并等待输入
  • proc然后执行echo default_passwd,但不是将输出发送到sys.stdout,而是将其传递给subprocess.PIPE
  • p1上的通信将proc.stdout的输出发送到p1的stdin并等待它完成
  • 最后一个命令等待proc进程完成并退出