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

标签 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

最佳答案

尝试使用 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/

相关文章:

python - 名称错误 : name 'skimage' is not defined

python - 如何强制 SAS 等待命令完全执行?

c - 我如何确保生产者线程和消费者线程都一个接一个地无限运行?

linux - 写入文件的 syslog() 消息

bash - 当我设置-e时如何忽略不同于0的返回值?

bash - 在 bash 命令中运行时,分号有什么作用?

python - 使用 mpi4py 将进程发送到不同节点

c# - 如何将 Python 脚本嵌入到 C# 程序中?

linux - mongodb 无法从 mongo.conf 开始

node.js - 如何使用 child_process 运行返回值列表的 bash 脚本?