Die Remote-Maschine(n) müssen nicht installiert sein. Sie können Expect auf einer lokalen Workstation oder VM (virtualbox) oder einer beliebigen *nix-Box installieren und einen Wrapper schreiben, der dieses .ex (expect)-Skript aufruft (es kann kleine Änderungen von Distribution zu Distribution geben, dies wurde unter CentOS 5/6 getestet ):
#!/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
Sie benötigen keinen Root-Zugriff, um passwd
zu verwenden .
Das sollte gut funktionieren.
passwd <<EOF
old password
new password
new password
EOF