我想使用 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"
查找的提示(例如 ),以了解何时应发送下一行。