blob: ce85889bdece4e35bc29e14bb72cced141411604 [file] [log] [blame] [edit]
#!/usr/bin/expect
#
# Reboot a machine connected to a Servertech Sentry power strip
#
# Copyright 2008 Google Inc., Ryan Kubiak <rkubiak@google.com>
# Released under the GPL v2
set P "reboot-sentry"
if {[llength $argv] < 3} {
puts stderr "Usage: $P <ts host> <ts port> <outlet>"
exit 1
}
set user {admn}
set pass {admn}
set tshost [lindex $argv 0]
set tsport [lindex $argv 1]
set outlet [lindex $argv 2]
set connected {0}
set attempts {0}
while {$connected == 0 && $attempts < 10} {
spawn telnet $tshost $tsport
sleep 5
send "\r"
set timeout 10
set attempts [ expr $attempts +1 ]
expect {
#Connection closed
"Connection closed by foreign host." {
puts "Retrying attempt $attempts"
set rand [expr round(rand() * 15 + 6)]
puts "Waiting $rand before next attempt"
sleep $rand
}
#Already logged in
"Switched CDU:" {
set connected {1}
send "reboot $outlet\r"
expect "Command successful"
send "logout\r"
puts "Machine successfully rebooted."
exit 0
}
#Login
"Username" {
set connected {1}
send "$user\r"
expect "Password:"
send "$pass\r"
expect "Switched CD:"
send "reboot $outlet\r"
expect "Command successful"
send "logout\r"
puts "Machine successfully rebooted."
exit 0
}
timeout {
puts "Timed out connecting."
}
}
}
puts "Unable to connect after 10 connection attempts."
exit 1