我目前正在CentOs 8 VM上处理Python脚本,我试图编写我的python脚本的一部分,该脚本将为他们设置用户密码而无需用户交互。我还没有找到执行此操作的方法,并尝试了各种方法,例如:
subprocess.run(str('echo -e "password\npassword\npassword\n" | sudo -S passwd --stdin user'), shell=True, universal_newlines=True, check=True)
但无济于事。
我知道这是不安全的(即使它可以工作),但是在这种情况下,这并不重要,因此,除了安全性之外,我只需要使其工作即可。密码只是显示代码的示例,据我所知,如果用作实际密码,它们将被拒绝。
是否可以使脚本以root用户而不是登录用户的身份运行?
与root用户做类似的事情是这样的:
subprocess.run(str('echo -e "password\npassword" | passwd --stdin ' + userName), shell=True, universal_newlines=True, check=True)
只有当我添加了sudo部分后,我才能自动输入sudo密码
如果我直接从终端执行此操作,它将起作用:
echo -e "password\npassword\npassowrd" | sudo -S passwd --stdin dave
答案 0 :(得分:0)
尝试一下,看看这个related thread。
Generated model file: Model1.edmx.
Loading metadata from the database took 00:00:01.3576925.
Generating the model took 00:00:01.3134936.
答案 1 :(得分:0)
尝试如下使用subprocess.Popen(command, 0, None, None, shell=True)
:
def launchCommand(command):
proc = subprocess.Popen(command,0,None,None, shell=True)
proc.poll()
proc.wait()
ret = proc.returncode
return ret
command = str('echo -e "password\npassword\npassword\n" | sudo -S passwd --stdin user')
print(launchCommand(command))