BladeSystem - General
1846740 Members
5855 Online
110256 Solutions
New Discussion

VC CLI script which handles being on the wrong VC

 
ilouser
Occasional Advisor

VC CLI script which handles being on the wrong VC

Here's an expect script which lets us run a VC command without knowing which is the active VC. I can point it at either VC and if one says "go to this IP instead" it'll automatically do that and re-run the command without you knowing and having to deal with it. server02:/ root# util_execute_vcmgr_cmd chassis02-vc1 hpadmin password "show server -output=script2,no-headers" enc0:1;1Z34AB1234;1;ProLiant BL685c G5;OK;Off;project_dev_tool_profile enc0:2;1Z34AB1234;2;ProLiant BL685c G5;OK;Off;<Unassigned> enc0:3;1Z34AB1234;3;ProLiant BL685c G5;OK;Off;project_dev_odb4 enc0:4;1Z34AB1234;4;ProLiant BL685c G5;OK;Off;project_dev_odb3 server02:/ root# util_execute_vcmgr_cmd chassis02-vc2 hpadmin password "show server -output=script2,no-headers" enc0:1;1Z34AB1234;1;ProLiant BL685c G5;OK;Off;project_dev_tool_profile enc0:2;1Z34AB1234;2;ProLiant BL685c G5;OK;Off;<Unassigned> enc0:3;1Z34AB1234;3;ProLiant BL685c G5;OK;Off;project_dev_odb4 enc0:4;1Z34AB1234;4;ProLiant BL685c G5;OK;Off;project_dev_odb3 #!/usr/local/bin/expect # Program : util_execute_vcmgr_cmd # Version : 1.2 # Author : Mark Ashley <mark at ibiblio dawt org> # Initial Date : 12th Feb 2009 # Modify Date : 26th Feb 2009 # Purpose : Connect to a HP Blade Chassis VC and run a command set real_noisy 0 set noisy $real_noisy # exp_internal 0 log_user $real_noisy set whoami "[exec /usr/ucb/whoami]" set myhostname "[exec /bin/hostname]" set osname "[exec uname -s]" set shell "tcsh" set sshcmd "/bin/ssh" set remote_prompt "\-\>$" set local_prompt "(%|#|\\\$) $" set remhost [lindex $argv 0] set user [lindex $argv 1] set passwd [lindex $argv 2] set command [lindex $argv 3] # log_file -noappend /var/tmp/vcmgr_cmd.$remhost.log proc login_to_remote_host {} { global whoami global remhost global user global passwd global local_prompt global remote_prompt global command global shell_id global sshcmd send "$sshcmd $remhost -oStrictHostKeyChecking=no -l $user \"$command\"\r" expect "*" set timeout 10 set after_password 0 while 1 { expect { -re "Password: " { send "$passwd\r" expect "\r\n" set after_password 1 } -re ".*Virtual Connect Manager not found at this IP address." { set after_password 0 } "continue connecting \(yes/no\)" { send "yes\r" } -re "Last login.+" { send "\r" } timeout { return } -re "password:" { send "$passwd\r" } -re "Please use IP Address: (.*)\r\n" { set newhost $expect_out(1,string) log_user 0 set noisy 0 exec kill -INT $shell_id # send_user "Switching to actual host $newhost\r\n" expect -re $local_prompt send "$sshcmd $newhost -oStrictHostKeyChecking=no -l $user \"$command\"\r" expect -re "Password: " { send "$passwd\r" expect "\r\n" set after_password 1 } } -re $local_prompt { set after_password 0 send_user "\r\n" exit } "publickey,password,keyboard-interactive" { send_error "\rpassword for $remhost is wrong\r\n" sleep 1 exit } -re ".*\r" { if ($after_password) { send_user $expect_out(buffer) } } } } } set shell_id [spawn $shell -l] send "stty raw -echo\r" expect "*" send "uname -s\r" expect "$osname\n" expect -re $local_prompt login_to_remote_host expect -re $local_prompt send_user "\r\n\n"