blob: b3d97b0331100e99f184df7d3c95abf56087d891 [file] [log] [blame]
#!/usr/bin/expect
#
# reboot-rsa2 -- reboot systems via their RSA-II management cards
#
# Use a systems RSA (II) managment card to hard reset that system.
#
# usage:
# reboot-rsa2 <userid> <password> <connect command> ...
#
# examples:
# reboot-rsa2 FOO BAR telnet 1.2.3.4 23
#
# (C) Copyright IBM Corp. 2004, 2005, 2006
# Author: Aileen Sheedy <asheedy@us.ibm.com>
#
# The Console Multiplexor is released under the GNU Public License V2
#
set P "reboot-rsa2"
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
}
"username:" {
send "$username\r$password\r"
}
timeout {
winge "Never saw opening screen with \"username:\""
exit 2
}
}
expect {
"Invalid login!" {
winge "Invalid username or password"
exit 2
}
">" {
send "reset\r"
}
}
expect {
"ok" {
note "System restarting"
send "exit\r"
exit 0
}
timeout {
}
}
winge "an error occurred while restarting the server"
exit 1