#! /usr/bin/expect
#
# Handle initial login options.
#
# USAGE: $ ./handle-login <user> <password> <node>
#
set username [lindex $argv 0];
set password [lindex $argv 1];
set node [lindex $argv 2];
set timeout 5
# Start login.
spawn ssh $username@$node
# Enter password.
expect {
# Optionally establish host authenticity.
"Are you sure you want to continue connecting (yes/no)?" {
send "yes\n"
exp_continue
}
"password:" {
send "$password\n"
}
}
# Password failed, change password or logged in.
expect {
"Permission denied" {
send_user "Permission denied!"
exit
}
"WARNING: Your password has expired." {
# Change password.
expect "Current Password:"
send "$password\n"
expect "New Password:"
send "$password\n"
expect "Retype new Password:"
send "$password\n"
}
"Last login" {
# Logged in.
}
"Creating home directory" {
# Logged in.
}
timeout {
# Do not know what prompt to expect, assume logged in.
}
}
# Logout.
sleep 1
send "exit\n"