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.