La ou les machines distantes n'ont pas besoin d'être installées. Vous pouvez installer expect sur un poste de travail local ou une machine virtuelle (virtualbox) ou n'importe quelle boîte * nix, et écrire un wrapper qui appelle ce script .ex (attend) (il peut y avoir de petits changements d'une distribution à l'autre, ceci testé sur CentOS 5/6 ):
#!/usr/bin/expect -f
# wrapper to make passwd(1) be non-interactive
# username is passed as 1st arg, passwd as 2nd
set username [lindex $argv 0]
set password [lindex $argv 1]
set serverid [lindex $argv 2]
set newpassword [lindex $argv 3]
spawn ssh $serverid passwd
expect "assword:"
send "$password\r"
expect "UNIX password:"
send "$password\r"
expect "password:"
send "$newpassword\r"
expect "password:"
send "$newpassword\r"
expect eof
Vous n'avez pas besoin d'un accès root pour utiliser passwd
.
Cela devrait très bien fonctionner.
passwd <<EOF
old password
new password
new password
EOF