#!/usr/bin/expect # ============================================================================ # # Copyright (C) THALES. All rights reserved # Author: Laurent Mazet # # Script de controle des lames HS22 IBM # # 2014-12-12 V1.0 : Creation # # ============================================================================ # default value set blade -1 set host "" set login "admin" set password "thalescom02" set prompt "system>" set state "on" proc usage {rc} { puts "usage: set_blade_power \[host\] \[-b blade\] \[-h\] \[-l login\] \[-p password\] \[-x prompt\] \[-on|-off\]" exit $rc } # process argument set action "" for {set i 0} {$i < [llength $argv]} {incr i} { set arg [lindex $argv $i] switch $arg { -b { set action "-blade" } -h { usage 0 } -l { set action "-login" } -off { set state "off" } -on { set state "on" } -p { set action "-password" } -x { set action "-prompt" } default { switch $action { -blade { set blade $arg } -login { set login $arg } -password { set password $arg } -prompt { set prompt $arg } default { set host $arg } } set action "" } } } if {$action != ""} { puts "missing arguments" exit 1 } if { $host == "" } { usage 1 } if { $blade <= 0 } { puts "missing arguments" exit 1 } # start connection spawn telnet $host # login expect { "username:" { send "$login\r" } timeout { send_user "connection to host failed\n"; exit 1 } eof { send_user "connection to host failed\n"; exit 1 } } # password expect { "password:" { send "$password\r" } timeout { send_user "connection to host failed\n"; exit 1 } eof { send_user "connection to host failed\n"; exit 1 } } expect { "$prompt" { send "env -T system:blade\[$blade\]\r" } "username:" { send_user "connection to host failed\n"; exit 1 } } expect { "OK" { send "power -$state\r" } "empty" { send "exit\r"; send_user "\nno blade in this slot\n"; exit 0 } "$prompt" { send_user "error\n"; exit 1 } } expect { "OK" { send "exit\r" } "$prompt" { send_user "error\n"; exit 1 } } send_user "\n" exit 0 # vim:set tabstop=4 shiftwidth=4 softtabstop=4: