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

おすすめ記事