Altera a senha com o kpasswd via linha de comando?

3

Eu quero usar o kpasswd para alterar minha senha. Desde que eu tenho que fazer isso por vários reinos, eu gostaria de automatizá-lo passando a senha. Eu quero definir uma variável no bash e passar isso para o kpasswd, de alguma forma. :) A configuração variável não é problema, mas passá-lo para o kpasswd, isso é um problema.

Como eu faria isso?

De man kpasswd parece que não há uma bandeira que eu possa repassar, então eu estava pensando em usar o printf ou alguma outra solução. Infelizmente isso não funciona:

printf "$PWD\n$PWD\n" | kpasswd $KERBEROS_USERNAME@DOMAIN

Alguns outros detalhes:

$ bash --version

GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14)

$ kpasswd --version

kpasswd (Heimdal 1.5.1apple1)
    
por Sander 12.04.2016 / 10:30

1 resposta

4

Isso é feito tradicionalmente com um script expect . Por exemplo

    #!/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

Coloque esse script em um arquivo, diga mysetpw , do chmod +x mysetpw e, em seguida, execute-o com ./mysetpw principalname oldpassword newpassword . Eu não tenho kpasswd , mas os exemplos na web parecem sugerir que ele também precisa da senha antiga, como neste documento. Talvez seja necessário alterar os prompts (por exemplo, "password" ) que o script procura para saber quando deve enviar a próxima linha.

    
por 12.04.2016 / 11:12

Tags