通过命令行使用 kpasswd 更改密码?

通过命令行使用 kpasswd 更改密码?

我想使用 kpasswd 更改我的密码。由于我必须为多个领域执行此操作,因此我想自动传递密码。我想在 bash 中设置一个变量并将其传递给 kpasswd,以某种方式。 :) 变量设置没有问题,但是将其传递给 kpasswd ,那就是一个问题。

我该怎么做呢?

看来man kpasswd没有一些我可以传递的标志,所以我正在考虑使用 printf 或其他一些解决方案。不幸的是这不起作用:

printf "$PWD\n$PWD\n" | kpasswd $KERBEROS_USERNAME@DOMAIN

其他一些细节:

$ bash --version

GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14)

$ kpasswd --version

kpasswd (Heimdal 1.5.1apple1)

答案1

传统上,这是通过expect脚本完成的。例如

    #!/usr/bin/expect --
    set user [lindex $argv 0]
    set oldpassword [lindex $argv 1]
    set password [lindex $argv 2]
    spawn kpasswd $user
    expect "password"
    send "$oldpassword\r"
    expect "password"
    send "$password\r"
    expect "password"
    send "$password\r"
    expect eof

将此脚本放入文件中,例如mysetpw, do chmod +x mysetpw,然后使用 运行它./mysetpw principalname oldpassword newpassword。我没有kpasswd,但网络上的示例似乎表明它也需要旧密码,如本脚本中所示。您可能需要更改脚本"password"查找的提示(例如 ),以了解何时应发送下一行。

相关内容