Group :: Development/Tcl
RPM: expect
Main Changelog Spec Patches Sources Download Gear Bugs and FR Repocop
#!/usr/bin/tclsh
# $Id: autopasswd.expect,v 1.6 1999/08/27 19:39:18 moniot Exp $
# Wrapper to run passwd(1) non-interactively
# Usage: autopasswd username password
# or echo " username password" | autopasswd
# Returns code 0 if successful, nonzero otherwise (bad password)
#
# Author: R. Moniot, based on simpler version found in expect distribution
# Date: 27 August 1999
package require Expect
if "$argc > 0" {
# Get username and password from commandline if present.
set username [lindex $argv 0]
set password [lindex $argv 1]
} else {
# Otherwise read username and password from stdin: they must be separated
# by exactly one blank space and contain no blanks themselves.
expect_user {
-re "(.*) (.*)" {
set username $expect_out(1,string);
set password $expect_out(2,string)
}
}
}
spawn passwd $username
# The sleep is needed to give passwd time to get ready.
expect {
"password:" { sleep 1; send -- "$password\r" } # send
}
expect {
"BAD PASSWORD:*" { exit 1 }
"password:" { sleep 1; send -- "$password\r" } # resend
}
expect {
"successfully" { exit 0 } # OK (Linux flavor)
eof { exit 0 } # OK (AIX flavor)
timeout { exit 2 } # something went wrong
}
exit 0