blob: 9b5082db21f1b56973b2579548b1e27ce77ee0d1 [file] [log] [blame]
#!/usr/bin/expect
#
# reboot-rsa -- reboot systems with RSA management cards
#
# Reboot systems via their RSA (I) managment card interface.
#
# usage:
# reboot-rsa <userid> <password> <connect commands> ...
#
# example
# reboot-rsa FOO BAR telnet 1.2.3.4
#
# (C) Copyright IBM Corp. 2004, 2005, 2006
# Author: Dave Hansen <haveblue@us.ibm.com>
#
# The Console Multiplexor is released under the GNU Public License V2
#
set P "reboot-rsa"
if {[llength $argv] < 3} {
puts stderr "Usage: $P <username> <password> <cmd> ..."
exit 1
}
set username [lindex $argv 0]
set password [lindex $argv 1]
log_user 0
#stty echo
#log_file -a "$logfile"
proc note {m} {
global P
puts "$P: $m"
}
proc warn {m} {
global P
puts "$P: WARNING: $m"
}
proc winge {m} {
global P
puts "$P: ERROR: $m"
}
set elapsed_time 0
set timeout 10
set command [lrange $argv 2 end]
eval spawn [lrange $argv 2 end]
note "Logging into service processor with command \"$command\" to restart it";
expect {
"Connection closed by foreign host." {
winge "Telnet connection closed."
exit 1;
}
"Unable to connect to remote host:" {
winge "Someone may already have the service processor";
exit 2;
}
"Login ID:" {
send "$username\t$password\r"
}
timeout {
winge "never saw opening screen with \"Login ID:\""
exit 2;
}
}
expect {
"Log Off" {
send "\t\t\t\t\r"
note "Saw opening screen, selecting \"Server Power/Restart\"";
}
timeout {
}
}
expect {
"Restart Server Immediately" {
note "Saw \"Server Power/Restart\" screen. Selecting \"Restart\"";
send "\t\t\t\t\t\r";
}
}
expect {
"Restarting the system immediately" {
note "Saw restart confirmation prompt, pressing enter";
send "\r"
}
}
expect {
"The system is performing a Restart Server Immediately" {
note "the system is restarting";
exit 0;
}
}
winge "an error occurred while restarting the server"
exit 1;