#!/usr/bin/expect -f set force_conservative 0 ;# set to 1 to force conservative mode even if ;# script wasn't run conservatively originally if {$force_conservative} { set send_slow {1 .1} proc send {ignore arg} { sleep .1 exp_send -s -- $arg } } set timeout -1 lappend env(PATH) :/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin set env(TERM) vt100 set env(INPUTRC) /etc/inputrc set env(LANG) en_US proc help {} { puts "\tcuda-power - tool for rebooting(power cycling) CUDA systems in the C327 lab" puts "\tUsage: cuda-power SYSTEMNAME " puts "\tWhere SYSTEMNAME is the DNS resolvable hostname of any system in the C327 lab (cuda-linux, cuda-spare, compiler-linux, etc)\n\n" puts "\tReport bugs to Lonni J Friedman \n" } proc cuda-power4.exp {power box} { puts "Trying to telnet into $power" spawn telnet $power match_max 100000 expect "Username: " send -- "admn\r" expect -exact "Password: " send -- "admn\r" expect -exact "Switched CDU: " send -- "reboot $box\r" sleep 1 send -- "quit\r" expect eof } # Add a proc for the other ones. Or maybe it is only a differnece in the expect-related text? switch [lindex $argv 0] { # Note that the -/-- has issues with expect as started in this script --help help -h help compiler-linux { cuda-power4.exp cuda-power4 compiler-linux } cuda-reports { cuda-power4.exp cuda-power4 cuda-reports } cuda-linux32-test1 { cuda-power4.exp cuda-power4 cuda-linux32-test1 } cuda-win64-minidvs0 { cuda-power3.exp cuda-power3 cuda-win64-minidvs0 } cuda-win64-test0 { cuda-power3.exp cuda-power3 cuda-win64-test0 } cuda-win64-test1 { cuda-power3.exp cuda-power3 cuda-win64-test1 } cuda-spare { cuda-power3.exp cuda-power3 cuda-spare } cuda-spare-2 { cuda-power3.exp cuda-power3 cuda-spare-2 } cuda-win32-test2 { cuda-power3.exp cuda-power3 cuda-win32-test2 } cuda-win32-test0 { cuda-power2.exp cuda-power2 cuda-win32-test0 } cuda-win32-test1 { cuda-power2.exp cuda-power2 cuda-win32-test1 } cuda-win-gputest0 { cuda-power2.exp cuda-power2 cuda-win-gputest0 } cuda-linux-gputest0 { cuda-power2.exp cuda-power2 cuda-linux-gputest0 } cuda-linux-gputest1 { cuda-power2.exp cuda-power2 cuda-linux-gputest1 } cuda-linux64-test0 { cuda-power2.exp cuda-power2 cuda-linux64-test0 } cuda-linux32-test0 { cuda-power2.exp cuda-power2 cuda-linux32-test0 } cuda-linux32-minidvs0 { cuda-power2.exp cuda-power2 cuda-linux32-minidvs0 } cuda-linux-bench0 { cuda-power1.exp cuda-power1 cuda-linux-bench0 } cuda-linux64-minidvs0 { cuda-power1.exp cuda-power1 cuda-linux64-minidvs0 } cuda-win-bench0 { cuda-power1.exp cuda-power1 cuda-win-bench0 } cuda-win32-minidvs0 { cuda-power1.exp cuda-power1 cuda-win32-minidvs0 } cuda-linux-farm0 { cuda-power0.exp cuda-power0 cuda-linux-farm0 } cuda-linux-farm1 { cuda-power0.exp cuda-power0 cuda-linux-farm1 } cuda-linux-farm2 { cuda-power0.exp cuda-power0 cuda-linux-farm2 } cuda-linux-mayor0 { cuda-power0.exp cuda-power0 cuda-linux-mayor0 } cuda-linux64 { cuda-power0.exp cuda-power0 cuda-linux64 } cuda-linux { cuda-power0.exp cuda-power0 cuda-linux } TowerA_Outlet8 { cuda-power0.exp cuda-power4 TowerA_Outlet8 } default { puts "Invalid syntax or unknown system\n"; help } }