我目前正在 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
最佳答案
尝试使用 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))
关于python - 从以用户身份运行的 python 脚本更改用户密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60404638/