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
Webの例では、このスクリプトに示されているように、古いパスワードも必要であることを示しているようです。"password"
次の行をいつ送信するかを知るために、スクリプトが探すプロンプト(たとえば)を変更する必要があるかもしれません。