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