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.