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"다음 줄을 언제 보내야 하는지 알기 위해 스크립트가 찾는 프롬프트(예를 들어)를 변경해야 할 수도 있습니다 .

관련 정보