从以用户身份运行的python脚本更改用户密码

时间:2020-02-25 23:27:09

标签: python linux bash centos

我目前正在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

2 个答案:

答案 0 :(得分:0)

尝试一下,看看这个related thread

选项1

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))