出于培训原因,我试图编写一个创建和设置用户帐户和密码的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进程失败。 任何帮助将不胜感激。
答案 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()
useradd user1
命令并等待输入echo default_passwd
,但不是将输出发送到sys.stdout,而是将其传递给subprocess.PIPE proc.stdout
的输出发送到p1的stdin
并等待它完成proc
进程完成并退出