Python用户创建脚本
出于培训原因,我正在尝试编写一个python脚本来创建和设置用户帐户和密码:Python用户创建脚本,python,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 , '|' , 'p
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进程失败。
如果有任何帮助,我们将不胜感激。您为什么不在命令
useradd
的同时传递密码呢?
这样它就可以创建一个具有密码的用户,而无需提示
import os
import crypt
password ="your-password"
crypted_password = crypt.crypt(password,"22")
os.system("useradd -p "+ crypted_password +" student")
为什么不将密码与命令
useradd
一起传递?
这样它就可以创建一个具有密码的用户,而无需提示
import os
import crypt
password ="your-password"
crypted_password = crypt.crypt(password,"22")
os.system("useradd -p "+ crypted_password +" student")
@纳伦的答案简洁易懂;但是为了回答您的
子流程
问题,应该是这样的
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\u passwd,但不是将输出发送到sys.stdout,而是通过管道将其发送到subprocess.PIPE
- p1上的通信将
的输出发送到p1的proc.stdout
,并等待其完成stdin
- 最后的命令等待
进程完成并退出proc
- @Naren的答案简洁易懂;但是为了回答您的
子流程
问题,应该是这样的
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\u passwd,但不是将输出发送到sys.stdout,而是通过管道将其发送到subprocess.PIPE
- p1上的通信将
的输出发送到p1的proc.stdout
,并等待其完成stdin
- 最后的命令等待
进程完成并退出proc
subprocess.PIPE
在进程之间进行通信。不要将shell管道与子进程一起使用。相反,尝试使用subprocess.PIPE
在进程之间进行通信。os.system
比subprocess modulence简单得多的很好的示例。os.system
比subprocess moduleThanks Vinny简单得多。它可以工作,但似乎没有正确设置密码。我错过了-p
参数;现在就试试吧谢谢你的评论。它可以工作,但似乎没有正确设置密码。我错过了-p
参数;现在试试看