【问题标题】:Change user password from python script running as user从以用户身份运行的 python 脚本更改用户密码
【发布时间】:2020-06-09 18:41:02
【问题描述】:

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

【问题讨论】:

  • 我执行了你的代码echo -e "password\npassword\npassowrd" | sudo -S passwd --stdin dave。它抛出一个错误:passwd: unrecognized option '--stdin'。请提供正确的命令。
  • 如果我运行它的命令它工作:'[dave@localhost ~]$ echo -e "password\npassword\npassword" | sudo -S passwd --stdin dave [sudo] dave 的密码:更改用户 dave 的密码。 passwd:所有认证令牌更新成功。 [dave@localhost ~]$'
  • 如果你能运行它,那么试试subprocess.Popen(command, 0,None, None, shell=True)
  • 不行还是不行,我明天再去拿。无论如何,谢谢。

标签: python linux bash centos


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试这个看看这个related thread

    选项-1

    username = 'dave'
    sudoPassword = 'mypass'
    command = 'passwd --stdin ' + username
    p = os.system('echo -e "password\npassword\npassowrd" %s|sudo -S %s' % (sudoPassword, command))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 2013-08-10
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      相关资源
      最近更新 更多