blob: e7f986c170d4150703dbe130e2e3a37421e6e6c1 [file] [log] [blame] [edit]
#!/usr/bin/expect -f
#
# reboot-netfinity -- reboot netfinity machines via their management port
#
# This expect script reboots a machine via a managemant port.
# It only works with the Netfinity-style Service Processors.
# They have a number-driven interface
#
# example machines: Netfinity 6000R, 8500R
# xSeries x350, x370
#
# usage:
# reboot-netfinity <user> <password> <connect command> ...
#
# examples:
# reboot-netfinity USERID PASSW0RD telnet 1.2.3.4 7033
#
# (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-netfinity"
if {[llength $argv] < 2} {
puts stderr "Usage: $P <userid> <password> <cmd> ..."
exit 1
}
set argc [llength $argv]
set userid [lindex $argv 0]
set password [lindex $argv 1]
set timeout 30
set send_slow {1 .1}
set command [lrange $argv 2 end]
puts "$P: Logging into service processor with command \"$command\" to restart it";
eval spawn [lrange $argv 2 end]
send -s -- "\033\033\033\033\033"
expect *;
send "\033"
expect {
#Log in
"USER ID:" {
send -s -- "$userid\r"
expect -exact "PASSWORD:"
send -s -- "$password\r"
exp_continue;
}
#Some machines use different login prompts
"User_id:" {
send -s -- "$userid\r"
expect -exact "Password:"
send -s -- "$password\r"
exp_continue;
}
#already logged in
"Z - Start Remote Video" {
send "6"
expect -exact "4 - Power On"
send "3"
expect -exact "2 - Power Off Immediately"
send "2"
expect -exact "0 - Write"
send "0"
expect -exact "6.3.2: Write"
send -s -- "\033\033\033\033\033"
expect -exact "Z - Start Remote Video"
send "6"
expect -exact "4 - Power On"
send "4"
expect -exact "2 - Power On Release CPU's Reset"
send "2"
expect -exact "0 - Write"
send "0"
expect -exact "6.4.2: Write"
# On kernels with ACPI support, the above may send an ACPI
# event to the OS to perform a clean shutdown. If that happens
# we may not ever come back up. Add the reboot command below
# to finish the job.
send -s -- "\033\033\033\033\033"
expect -exact "Z - Start Remote Video"
send "7"
expect -exact "4 - Restart SP"
send "2"
expect -exact "0 - Write"
send "0"
expect -exact "7.2: Write"
}
}
puts "$P: reboot initiated"